home *** CD-ROM | disk | FTP | other *** search
/ Power-Programmierung / CD2.mdf / doc / techref / kapitel.003 < prev    next >
Text File  |  1993-03-01  |  116KB  |  2,367 lines

  1.  
  2.      ** technische Referenz für Programmierer für MSDOS und den IBM PC **
  3.  ─────────────────────────┤ eingetragene Anwenderversion ├───────────────────────────
  4.                          nicht für den allgemeinen Vertrieb 
  5.                     Urheberrecht (c) 1987, 1990 Dave Williams
  6.               Deutsche Übersetzung Urheberrecht (c) 1990 Klaus Overhage
  7.          Änderungen und Erweiterungen Urheberrecht (c) 1990 Klaus Overhage
  8.  
  9.  
  10.                           K A P I T E L      D R E I
  11.  
  12.  
  13.                                 Das PC ROM BIOS
  14.  
  15.  
  16.                                 I N H A L T E 
  17.  
  18. Anruf des ROM BIOS .................................................. 3**1
  19. Interrupt 10h Videofunktionen ....................................... 3**2
  20. Interrupt 11h Ausstattungskontrolle ................................. 3**3
  21. Interrupt 12h Speichergröße ......................................... 3**4
  22. Interrupt 13h Diskettenfunktionen ................................... 3**5
  23. Interrupt 14h Initialisieren und Zugriff serieller Port ............. 3**6
  24.               FOSSIL Treiber ........................................ 3**7
  25. Interrupt 15h Kassette I/O .......................................... 3**8
  26. Interrupt 16h Tastatur I/O .......................................... 3**9
  27. Interrupt 17h Drucker ............................................... 3**10
  28. Interrupt 18h ROM BASIC ............................................. 3**11
  29. Interrupt 19h Systemstart ........................................... 3**12
  30. Interrupt 1Ah Datum und Zeit ........................................ 3**13
  31. Interrupt 1Bh Control-Break ......................................... 3**14
  32. Interrupt 1Ch Zeit-Zähler Takteinheit ............................... 3**15
  33. Interrupt 1Dh Vektor zur Video Initialisierungsparameter ............ 3**16
  34. Interrupt 1Eh Vektor zur Diskettenparametertabelle....... ........... 3**17
  35. Interrupt 1Fh Ptr zu Grafikzeichen (zweiter Teil) ................... 3**18
  36.  
  37.  
  38.  
  39. Anruf des ROM BIOS .................................................. 3**1
  40.  
  41. Die BIOS Funktionen werden aufgerufen, indem die gewünschte Funktionsnummer in das
  42. Register AH übertragen wird, Unterfunktion in AL, und die anderen Register mit den
  43. erforderlichen Werten versorgt werden, und einer der ints 10h bis int 1Fh durchgeführt wird.
  44.  
  45. Sobald der Interrupt aufgerufen wird, werden alle Register und Werte der Kennzeichen
  46. auf den Stapel abgelegt. Die Interruptadresse enthält ein Zeiger auf eine absolute Adresse
  47. in dem Adreßbereich des ROM BIOS Chips. Dies Adresse kann einen Zeiger in die
  48. IBMBIO.COM (oder gleichwertige) Datei oder einer Anwenderdatei enthalten.
  49.  
  50. Der Adressvektor zeigt zu einem besonderen BIOS Befehls Handler. Dieser Handler
  51. holt sich die Registerwerte, vergleicht diese mit seiner Liste von Funktionen, und führt
  52. die Funktion aus, falls diese zulässig ist. Sobald die Funktion ausgeführt ist, gibt diese
  53. Werte an den Handler zurück. Der Handler sichert die Werte in den Stapel und
  54. gibt die Steuerung an das aufrufende Programm zurück.
  55.  
  56. Die meisten Funktionen geben eine Fehlercode zurück; einige liefern jedoch noch
  57. mehr Information. Details hierüber sind bei der Beschreibung der einzeln Funktionen
  58. enthalten.
  59.  
  60. Registerwerte sind nur aufgeführt, wenn diese vom BIOS benutzt werden. Einige Funktion
  61. geben wertlose Daten in ungebrauchten Registern zurück. Diese sollten nicht zum
  62. Testen benutzt werden, da man sich hierauf nicht verlassen kann.
  63.  
  64.  
  65. Drei Arten von BIOS Routinen sind verfügbar: PC BIOS, AT BIOS (auch CBIOS oder
  66. "altes Kompatibilitäts BIOS " genannt, und das PS/2 ABIOS  "erweitertes BIOS".
  67.  
  68. Das erweiterte BIOS ist in den PS/2 ROMs enthalten. Es wurde erst geplant zur OS
  69. Benutzung, anstatt zur Anwenderbenutzung. OS/2 kann die Vorteile vom ABIOS nutzen, um
  70. den benötigten RAM auf PS/2 Systeme zu reduzieren. Der ABIOS kann falls dies ge-
  71. wünscht wird durch ABIOS Code auf der Festplatte oder im RAM ersetzt werden.
  72. Es ist außerdem ein neuer BIOS Datenbereich im oberen Speicherbereich definiert,
  73. der 1K vom RAM belegt. In OS/2 Systemen, werden Teile vom ABIOS durch OS/2 Treiber
  74. ersetzt.
  75.  
  76. Solange das CBIOS via Zeiger adressiert werden muß, sind die Routinen im ABIOS
  77. an absolute Adressen festgelegt. Deshalb könne diese direkt durch OS/2 an-
  78. gesprochen werden..
  79.  
  80. Das ABIOS kann im geschützten Modus ausgeführt werden, und ist voll ablaufinvariant.
  81. Es unterstützt drei Arten von Anforderungen - single-staged, discrete-multistaged, oder continuous-
  82. multistaged. Ein single-staged Anforderung erledigt seine Arbeit unmittelbar und gibt die
  83. Steuerung danach an den Aufrufer zurück. Ein discrete-multistaged Anforderung kann sich ereignen
  84. in zwei oder mehr Stufen mit Pausen zwischen den Stufen. Der Aufrufer kann die Steuerung während
  85. der Pausen wiedererlangen. Eine continuous-multistaged Anforderung startet einen Arbeitsgang der
  86. nie beendet wird. (manchmal auch als Daemon bezeichnet).
  87.  
  88. Entgegen dem CBIOS welches mit Software Interrupts aufgerufen wird, erfolgt der Zugang
  89. zum ABIOS mit FAR Calls. Aufrufe an das ABIOS sind komplett ablaufinvariant im echten und
  90. geschützten Modus. Um eine ABIOS Funktion aufzurufen muß das aufrufende Programm einen
  91. Zeiger zu zwei Datenstrukturen aufbauen - einen Anforderungsblock und ein allgemeinen Datenbereich. Der
  92. Anforderungsblock spezifiziert die gewünschte Funktionsnummer und der allgemein Datenbereich ist
  93. eine Tabelle die einen Zeiger zu allen anderen Tabellen und Datenbereichen des ABIOS enthält.
  94. Der interne Aufbau der allgemeinen Datenbereiche enthält die Funktionsübergabe-
  95. tabellen welche die Adressen von den BIOS Routinen haben.
  96.  
  97. ABIOS  Stapel Rahmen und Anrufvereinbarungen:
  98.        Bytes        Stapelinhalt
  99.         2    allgemeiner Datenbereichszeiger (Segment/Selektor ausschließlich) - verlangt
  100.         4    Zeiger Anforderungsblock - verlangt
  101.         4    Zeiger Funktionsübergabetabelle - geliefert durch das ABIOS oder dem Aufrufer
  102.         4    Zeiger Geräteblock - geliefert durch das ABIOS oder dem Aufrufer
  103.         4    Rücksprungadresse
  104.  
  105. In den ABIOS Übergabekonventionen werden ausschließlich die ersten beiden Elemente
  106. verlangt. ABIOS versorgt die nächsten beiden. In den Betriebssystem Übergabekonventioen
  107. übergibt diese der Aufrufer. Weil die Parameter nicht vom Stapel entfernt und an den
  108. Aufrufer zurückgegeben werden, kann das Betriebssystem die Funktionsübergabetabellen
  109. und Geräteadressen sichern, nachdem diese durch einen Aufruf des ABIOS versorgt wurden.
  110.  
  111. ABIOS tut nein Interrupt Schiedsspruch. Es nimmt an, das alle Interrupts durch den Aufrufer
  112. oder dem OS gehandhabt werden und es wird ausschließlich für den Service aufgerufen. Falls
  113. mehr als ein Gerät gemeinsam einen Hardware Interrupt benutzen muß das OS entscheiden welcher
  114. Interrupt für das ABIOS zulässig ist.
  115.  
  116. OS/2 kann das ABIOS benutzen falls es gefunden wurde, ansonsten kopiert es die BIOS Aufrufe für
  117. die DOS Kompatibilitätsbox indem die BIOS Aufrufe in seinen eigenen Gerätetreiber um-
  118. geleitet werden. Dies macht es eher schwierig für DOS Treiber für Massenpeicher, hoch-
  119. auflösende Videokarten, multitasking APIs benutzen int 15h, etc. Falls die Software
  120. die direkt Hardwaremanipulation benötigt, sollte kontrolliert werden, ob diese unter
  121. OS/2 abläuft. Der einfachste Methode dies zu kontrollieren, ist die DOS Version 10
  122. oder höher abzufragen.
  123.  
  124.  
  125.  
  126.  ┌─────────────────────────────────────────────────────────────────────────────┐
  127.  │ Interrupt 10h Video Services                                           3**2 │
  128.  └─────────────────────────────────────────────────────────────────────────────┘
  129.  (0:0040h) die BIOS Video Services sind in Kapitel 16 beschrieben.
  130.  
  131.  (Intern) Koprozessor Fehler( 80286+)
  132.           erzeugt von der CPU sobald das -ERROR Signal vom Koprozessor aktiviert wird.
  133.           (gewöhnlich 80x87, kann aber auch eine multimaster CPU oder ein alternativer NDP
  134.           wie Weitek, etc.) sein. ATs und Nachbauten verdrahten den Koprozessor gewöhnlich so
  135.           das IRQ13 benutzt wird, aber nicht alle machen es richtig.
  136.  
  137.  
  138.  
  139.  ┌─────────────────────────────────────────────────────────────────────────────┐
  140.  │ Interrupt 11h Ausstattungskontrolle                                    3**3 │
  141.  └─────────────────────────────────────────────────────────────────────────────┘
  142.  (0:0044h) liest den BIOS Datenbereich und gibt zwei Bytes mit den einstellten Information zurück.
  143. Aufruf keine Parameter
  144. Rückgabe AX Ausstattungliste. Bits sind:
  145.                 0       Anzahl Diskettenlaufwerke
  146.                         0 keine Laufwerke
  147.                         1 startfähige (IPL) Diskettenlaufwerk installiert
  148.                 1       Arithmetikprozessor
  149.                         0 kein Arithmetikprozessor (80x87) vorhanden
  150.                         1 Arithmetikprozessor( 80x87) vorhanden 
  151.          (PS/2) 2       0 Maus nicht installiert
  152.                         1 Maus installiert 
  153.            (PC) 2, 3    RAM auf dem Systemboard
  154.                         0, 0 16k (PC-0, PC-1)
  155.                         0, 1 32k 
  156.                         1, 0 48k 
  157.                         1, 1 64k (PC-2, XT)
  158.                         Anmerkung 1) nicht häufig benutzt. Alle Bits sind dann 1
  159.                                   2) beim AT sind die Bits immer 1
  160.                 4, 5    Videomodus beim Systemstart
  161.                         0, 0 kein Video installiert (benutzen mit stumm Datenstation)
  162.                         0, 1 40x25 Farbe (CGA)
  163.                         1, 0 80x25 Farbe (CGA, EGA, PGA, MCGA, VGA)
  164.                         1, 1 80x25 Monochrom (MDA oder Herkules, viele Super-hires
  165.                                                   Monochrom-Adapter)
  166.                 6, 7    Anzahl Diskettenlaufwerke (nur wenn Bit 0 = 1 ist)
  167.                         0, 0 1 Laufwerk
  168.                         0, 1 2 Laufwerke 
  169.                         1, 0 3 Laufwerke 
  170.                         1, 1 4 Laufwerke 
  171.                 8       0 DMA vorhanden
  172.                         1 kein DMA (PCjr, einige Tandy 1000s, 1400LT)
  173.                 9,A,B   Anzahl serieller RS232 Anschlüsse (0-3)
  174.                         0, 0, 0 keine 
  175.                         0, 0, 1 1 
  176.                         0, 1, 0 2 
  177.                         0, 1, 1 3 
  178.                         1, 0, 0 4 
  179.                 C       0 kein Spiele I/O angeschlossen
  180.                         1 Spiele I/O angeschlossen (vorgegeben für PCjr)
  181.                 D       installiertes serielles Zubehör
  182.                         0 kein serielles Zubehör installiert
  183.                         1 Convertible - internes Modem installiert
  184.                                 oder PCjr - serieller Drucker angeschlossen
  185.                 E,F     Anzahl paralleler Drucker
  186.                         0, 0 keine 
  187.                         0, 1 einer (LPT1, PRN)
  188.                         1, 0 zwei (LPT2)
  189.                         1, 1 drei (LPT3)
  190.                         Anmerkung Modelle bevor PS/2 erlaubten einen vierten
  191.                                 parallelen Drucker. Änderungen im BIOS der
  192.                                 PS/2s erlauben nicht die Benutzung von LPT4.
  193.  
  194.  
  195.  
  196.  
  197.  ┌─────────────────────────────────────────────────────────────────────────────┐
  198.  │ Interrupt 12h Speichergröße                                            3**4 │
  199.  └─────────────────────────────────────────────────────────────────────────────┘
  200.  (0:0048h) feststellen Systemspeicher
  201. Aufruf keine Parameter
  202. Rückgabe AX Anzahl zusammenhängender 1K RAM Blöcke verfügbar für DOS
  203. Anmerkung 1) dies ist derselbe Wert wie an der absoluten Adresse 04:13h.
  204.           2) einige ältere PC Modelle, geben den verfügbaren Speicher zurück, der
  205.              über DIP Schalter auf der Systemplatine eingestellt ist und nicht
  206.              den Speicher der physisch vorhanden ist.
  207.           3) für den PC/AT, dieser Wert gibt den funktionsfähigen Speicher an, der
  208.              beim power-on self-test gefunden wurde, ungeachtet der Speichergröße
  209.              die im CMOS RAM gespeichert ist.
  210.           4) der Wert gibt nicht irgendeinen Erweiterungsspeicher (über der 1 Mb Grenze)
  211.              zurück, der auf 80286 oder 80386 Maschinen vorhanden sein kann.
  212.  
  213.  
  214.  
  215.  
  216.  ┌─────────────────────────────────────────────────────────────────────────────┐
  217.  │ Interrupt 13h Diskettenfunktionen                                      3**5 │
  218.  └─────────────────────────────────────────────────────────────────────────────┘
  219.  (0:0049h) der Service für die BIOS Diskettenfunktionen sind in Kapitel 8
  220.            beschrieben.
  221.  
  222.  
  223.  
  224.  
  225.  ┌─────────────────────────────────────────────────────────────────────────────┐
  226.  │ Interrupt 14h Initialisieren und Zugriff serieller Port                3**6 │
  227.  └─────────────────────────────────────────────────────────────────────────────┘
  228.  (0:0050h) der folgende Status ist definiert:
  229.  
  230.         Modem-Status:
  231.         Bits    0 (DELTA) Modem zum Senden bereit
  232.                 1 (DELTA) Modem ist eingeschaltet 
  233.                 2 (DELTA) Telefon läutet 
  234.                 3 (DELTA) Verbindung zum Empfänger-Modem aufgebaut 
  235.                 4 Sendebereit 
  236.                 5 Endgerät betriebsbereit 
  237.                 6 Telefon läutet 
  238.                 7 Verbindung ist aufgebaut 
  239.  
  240.         Status der seriellen Schnittstelle:
  241.         Bits    0 Daten stehen bereit
  242.                 1 Datenüberlauf 
  243.                 2 Paritätsfehler 
  244.                 3 Protokoll nicht eingehalten 
  245.                 4 Unterbrechung festgestellt 
  246.                 5 übertragen holding Register leer 
  247.                 6 Übertragungs-Shift-Register leer 
  248.                 7 Zeitüberschreitung Anmerkung: falls Bit 7 einstellen dann andere Bits sind ungültig 
  249.  
  250. Alle Routinen haben in AH die Funktionsnummer und in DX die RS232 Kartennummer (Basis 0).
  251. In AL= das zu sendene Zeichen oder das empfangene Zeichen, falls nicht anders vermerkt.
  252.  
  253. Aufruf  AH 00h Initialisieren und Zugriff serieller Port
  254.                         Bitmuster: BBBPPSLL 
  255.                         BBB= Baud-Rate: 110, 150, 300, 600, 1200, 2400, 4800, 9600 
  256.                         PP= Parität: 01= ungerade, 11= gerade 
  257.                         S= Stop-Bits: 0= 1, 1= 2 
  258.                         LL= Datenlänge: 10= 7-bits, 11= 8-bits 
  259.         AL Konfigurationsparamter
  260.                 Bitmuster: 
  261.                 0 Datenlänge 
  262.                 1 Datenlänge 
  263.                 2 Stop-Bits 
  264.                 3 Parität 
  265.                 4 Parität 
  266.                 5 Baud-Rate 
  267.                 6 Baud-Rate 
  268.                 7 Baud-Rate 
  269.                 Datenlänge      10 7 Bits
  270.                                 11 8 Bits 
  271.                 Stop-Bits       0 1 Stop-Bit
  272.                                 1 2 Stop-Bits 
  273.                 Parität         00 keine
  274.                                 01 ungerade 
  275.                                 11 gerade 
  276.                 Baud-Rate       000 110 Baud
  277.                                 001 150 Baud 
  278.                                 010 300 Baud 
  279.                                 011 600 Baud 
  280.                                 100 1200 Baud 
  281.                                 101 2400 Baud 
  282.                                 110 4800 Baud 
  283.                                 111 9600 Baud( 4800 auf PCjr) 
  284.         DX Portnummer (0= COM1, 1= COM2, etc.)
  285. Rückgabe AH Status der seriellen Schnittstelle
  286.          AL Modem-Status
  287. Anmerkung Um den seriellen Port auf PS/2 Maschinen mit mehr als 9600 Baud zu
  288.           initialisieren, siehe fns 04h und 05h.
  289.  
  290.  
  291. Funktion 01h Zeichen in AL zum Comm Port ausgeben
  292. Aufruf   AH  01h
  293.          AL  Zeichen
  294.          DX  Portnummer (0 - 3)
  295. Rückgabe AH  Status RS232
  296.              Bit 0 Daten stehen bereit
  297.                  1 Datenüberlauf
  298.                  2 Paritätsfehler
  299.                  3 Protokoll nicht eingehalten
  300.                  4 Unterbrechung erkannt
  301.                  5 Übertragungs-Hold-Register leer
  302.                  6 Übertragungs-Shift-Register leer
  303.                  7 Zeitüberschreitung
  304.          AL  Modem-Status
  305.              Bit 0 (DELTA) Modem zum Senden bereit
  306.                  1 (DELTA) Modem ist angeschaltet
  307.                  2 (DELTA) Telefon läutet
  308.                  3 (DELTA), Verbindung zum Empfänger-Modem aufgebaut
  309.                  4 Modem zum Senden bereit
  310.                  5 Modem ist angeschaltet
  311.                  6 Telefon läutet
  312.                  7 Verbindung zum Empfänger-Modem aufgebaut
  313.  
  314.  
  315. Funktion 02h Zeichen vom Comm Port DX einlesen
  316. Aufruf   AH  02h
  317.          DX Portnummer (0-3)
  318. Rückgabe AL empfangenes Zeichen
  319.          AH Fehlercode (siehe Funktion 01h) (00h für kein Fehler)
  320.  
  321.  
  322. Funktion 03h Status vom Comm Port DX (0 oder 1) erfragen
  323. Aufruf   AH  03h
  324.          DX  Port (0-3)
  325. Rückgabe AH  Status der seriellen Schnittstelle
  326.              Bit 7 Zeitüberschreitung
  327.              Bit 6 Übertragungs-Shift-Register leer
  328.              Bit 5 Übertragungs-Hold-Register leer
  329.              Bit 4 Unterbrechung erkannt ("long-space")
  330.              Bit 3 Protokoll nicht eingehalten
  331.              Bit 2 Paritätsfehler
  332.              Bit 1 Datenüberlauf
  333.              Bit 0 Daten stehen bereit
  334.          AL  Modem-Status
  335.              Bit 7 Verbindung zum Empfänger-Modem aufgebaut
  336.              Bit 6 Telefon läutet
  337.              Bit 5 Endgerät betriebsbereit
  338.              Bit 4 Sendebereit
  339.              Bit 3 (DELTA) Verbindung zum Empfänger-Modem aufgebaut
  340.              Bit 2 (DELTA) Telefon läutet
  341.              Bit 1 (DELTA) Modem ist eingeschaltet
  342.              Bit 0 (DELTA) Modem zum Senden bereit
  343.  
  344.  
  345. Funktion 04h erweitertes Initialisieren (Convertible, PS/2)
  346. Aufruf   AH  04h
  347.          AL abschalten Zustand
  348.             01h falls abschalten
  349.             00h wenn kein abschalten
  350.          BH Parität
  351.             00h keine Parität
  352.             01h ungerade Parität
  353.             02h gerade Parität
  354.             03h Steuerknüppel Parität ungerade
  355.             04h Steuerknüppel Parität gerade
  356.          BL Anzahl Stop-Bits
  357.             00h 1 Stop-Bit
  358.             01h 2 Stop-Bits (1½ falls 5 Bit Datenlänge)
  359.          CH Datenlänge
  360.             00h 5 Bits
  361.             01h 6 Bits
  362.             02h 7 Bits
  363.             03h 8 Bits
  364.          CL Baud-Rate
  365.             00h 110
  366.             01h 150
  367.             02h 300
  368.             03h 600
  369.             04h 1200
  370.             05h 2400
  371.             06h 4800
  372.             07h 9600
  373.             08h 19200
  374.          DX comm Port (0-3)
  375. Rückgabe AH Status der seriellen Schnittstelle
  376.          AL Modem-Status
  377. Anmerkung liefert ein mehrfaches der fn 00h Möglichkeiten für PS/2 Maschinen.
  378.  
  379.  
  380. Funktion 05h erweitert Kommunikation Port steuern( Convertible, PS/2) 
  381. Aufruf   AH  05h
  382.          AL  00h lese Modem Steuerungsregister
  383.              01h schreibe Modem Steuerungsregister
  384.          BL  Modem Steuerungsregister
  385.            Bits 0 DTR Endgerät bereit 
  386.                 1 RTS Sender einschalten 
  387.                 2 out1 
  388.                 3 out2 
  389.                 4 loop
  390.                 5, 6, 7 reserviert 
  391.          DX  Portnummer (0= COM1, 1= COM2, etc.)
  392. Rückgabe AH Status der seriellen Schnittstelle (siehe fn 00h)
  393.          AL Modem-Status (siehe fn 00h)
  394.          BL Modem Steuerungsregister (siehe fn 01h)
  395.  
  396.  
  397.  
  398. FOSSIL Treiber ........................................................ 3**7
  399.  
  400. Interrupt 14h  FOSSIL (Fido/Opus/Seadog Standard Interface Level) Treiber
  401.                Ein FOSSIL ist ein Gerätetreiber zur Behandlung der IBM PC seriellen
  402.                Schnittstellen in einem Standardmodus von einem Anwendungs
  403.                (Kommunikations) Programm. Ein FOSSIL wird mit dem int 14h BIOS
  404.                Kommunikationsvektor verkettet und ersetzt viele Funktionen mit erweiterten
  405.                Routinen, auf die leicht durch eine Anwendung zugegriffen werden kann.
  406.  
  407.                Für alle Funktionen: alle Register die keinen Rückgabewert enthalten,
  408.                                     bleiben durch den Aufruf erhalten.
  409.  
  410.  
  411. Aufruf   AH  00h einstellen Baud-Rate und Parameter
  412.          AL  Byte
  413.              Bits 7,6,5 Baud-Rate
  414.              000     19200 Baud
  415.              001     38400 Baud
  416.              010     300 Baud
  417.              011     600 Baud
  418.              100     1200 Baud
  419.              101     2400 Baud
  420.              110     4800 Baud
  421.              111     9600 Baud
  422.              Bits 4,3 Parität
  423.              00      keine
  424.              01      ungerade
  425.              10      keine
  426.              11      gerade
  427.              Bit 2 Stop-Bits
  428.              0       1 Stop-Bit
  429.              1       2 Stop-Bits
  430.              Bit 1 Datenlänge
  431.              0       5 Bits plus Wert
  432.              andere  wahlweise
  433.          DX  Portnummer (NOP falls DX= 00FFh)
  434. Rückgabe AX  Status (siehe fn 03h)
  435. Anmerkung die niederwertigen 5 Bits sind bei FOSSIL 1.0 nicht definiert.
  436.  
  437.  
  438. Aufruf   AH  01h Zeichen übertragen mit Warten
  439.          AL  ASCII Wert des Zeichen das gesendet werden soll
  440.          DX  Portnummer (NOP falls DX= 00FFh)
  441. Rückgabe AX  Status (siehe Funktion 03h)
  442. Anmerkung 1) Zeichen wird zur Übertragung gepuffert. Falls im Sendepuffer Platz ist,
  443.              wird das Zeichen in den Puffer übertragen und die Steuerung an den
  444.              Aufrufer zurückgegeben. Falls der Puffer voll ist, wartet der Treiber
  445.              solange bis Platz da ist. Dies Funktion sollte mit Vorsicht benutzt
  446.              werden, sobald die Überlaufkontrolle eingeschaltet ist.
  447.  
  448.  
  449. Aufruf   AH  02h FOSSIL: ein Zeichen empfangen mit Warten
  450.          DX  Portnummer (0-3)(NOP falls DX= 00FFh)
  451. Rückgabe AH  RS-232 Status (siehe Funktion 00h)
  452.          AL  ASCII Wert des empfangenen Zeichens vom seriellen Port
  453. Anmerkung Ergibt Zeitüberschreitung falls DSR nicht besteht, selbst wenn
  454.           Funktion 03h zurückgibt das Daten bereit stehen.
  455.  
  456.  
  457. Aufruf   AH  03h FOSSIL: Status anfordern
  458.          DX  Portnummer (NOP falls DX= 00FFh)
  459. Rückgabe AX  Status
  460.              AH         Bit 0 gesetzt RDA Eingabedaten sind im Puffer verfügbar
  461.                             1 gesetzt OVRN Überlauf Eingabepuffer
  462.                             2 nicht benutzt 
  463.                             3 nicht benutzt 
  464.                             4 nicht benutzt 
  465.                             5 gesetzt THRE Platz ist verfügbar im Ausgabepuffer
  466.                             6 gesetzt TSRE Ausgabepuffer ist leer
  467.                             7 nicht benutzt 
  468.              AL         Bit 0 nicht benutzt
  469.                             1 nicht benutzt 
  470.                             2 nicht benutzt 
  471.                             3 gesetzt, dieses Bit ist immer gesetzt
  472.                             4 nicht benutzt 
  473.                             5 nicht benutzt 
  474.                             6 nicht benutzt 
  475.                             7 gesetzt DCD Übertragung festgestellt
  476. Anmerkung Bit 3 von AL ist immer gesetzt, damit Programme es als carrier detect bit
  477.           bei festverdrahteten (Null Modem) Verbindungen benutzen können.
  478.  
  479.  
  480. Aufruf   AH 04h Initialisieren FOSSIL Treiber
  481.          BX 4F50h                     (wahlweise)
  482.          DX Portnummer                (DX= 00FFh spezial)
  483.          ES:CX Zeiger zur ^C Adresse  (wahlweise)
  484. Rückgabe AX 1954h falls erfolgreich
  485.          BL maximum Funktion Nummer unterstützt (ausschließend 7Eh-0BFh)
  486.          BH Revision von FOSSIL unterstützt
  487. Anmerkung 1) DTR wird errichtet sobald FOSSIL initialisiert ist.
  488.           2) existierende Baud-Rate bleibt erhalten.
  489.           3) falls BX 4F50h enthält, spezifiziert die Adresse in ES:CX das ^C
  490.              Kennzeichenbyte im Anwenderprogramm, welches erhöht wird sobald ^C
  491.              durch die Tastaturroutinen erkannt wird. Dies ist wahlweise und wird
  492.              ausschließlich auf Maschinen benötigt, wo die Tastaturroutinen kein
  493.              int 1Bh oder int 23h durchführen können oder wollen, sobald ein control-C
  494.              eingegeben wurde.
  495.  
  496.  
  497. Aufruf   AH 05h Deinitialisiere FOSSIL Treiber
  498.          DX Portnummer (DX= 00FFh besonders)
  499. Rückgabe keine
  500. Anmerkung 1) DTR wird nicht beeinflusst.
  501.           2) Befreit Treiber von comm Port. Sollte ausgeführt werden, sobald
  502.              die Transaktionen am Port beendet sind.
  503.           3) falls DX= 00FFh, die Initialisierung die mit der FOSSIL Funktion
  504.              04h und DX= 00FFh durchgeführt wurde, ist unerledigt.
  505.  
  506.  
  507. Aufruf   AH 06h FOSSIL: erhöhen/verringern DTR
  508.          AL DTR gesetzter Status
  509.                 00h verringerte DTR
  510.                 01h erhöhte DTR
  511.          DX comm Port (NOP falls DX= 00FFh)
  512. Rückgabe keine
  513.  
  514.  
  515. Aufruf   AH 07h FOSSIL: Feststellen Zeit-Zähler Takteinheit Parameter
  516. Rückgabe AH Takteinheiten pro Sekunde auf Interruptnummer in AL
  517.          AL Zeit-Zähler Takteinheit Interrupt Nummer (nicht Vektor!)
  518.          DX Millisekunden pro Takteinheit( annähern)
  519.  
  520.  
  521. Aufruf   AH 08h FOSSIL: Ausgabepuffer leeren
  522.          DX Portnummer (NOP falls DX= 00FFh)
  523. Rückgabe keine
  524. Anmerkung wartet bis alle Ausgaben erledigt sind.
  525.  
  526.  
  527. Aufruf   AH 09h FOSSIL: Ausgabepuffer löschen
  528.          DX Portnummer (NOP falls DX= 00FFh)
  529. Rückgabe keine
  530. Anmerkung wird unmittelbar an den Aufrufer zurückgegeben.
  531.  
  532.  
  533. Aufruf   AH 0Ah FOSSIL: Eingabepuffer löschen
  534.          DX Portnummer (NOP falls DX= 00FFh)
  535. Rückgabe keine
  536. Anmerkung 1) falls irgendein Hindernis auftritt (fallendes RTS oder gesendetes
  537.              XOFF) wird der Port "freigegeben", indem ein RTS erstellt wird oder
  538.              XON gesendet wird.
  539.           2) wird unmittelbar an den Aufrufer zurückgegeben.
  540.  
  541.  
  542. Aufruf   AH 0Bh FOSSIL: Übertragen ohne Warten
  543.          AL ASCII Wert des Zeichen das gesendet werden soll
  544.          DX Portnummer (NOP falls DX= 00FFh)
  545. Rückgabe AX 0000h Zeichen wurde nicht akzeptiert
  546.             0001h Zeichen wurde akzeptiert
  547. Anmerkung dies ist genau dasselbe wie das "reguläre" Übertragen, mit der Einschränkung,
  548.           das wenn kein Platz im Ausgabepuffer ist der Wert 0 im Register AX
  549.           zurückgegeben wird und andernfalls eine 1.
  550.  
  551.  
  552. Aufruf   AH 0Ch FOSSIL: Nondestructive lesen nicht Warten
  553.          DX Portnummer (NOP falls DX= 00FFh)
  554. Rückgabe AH Zeichen
  555.             0FFFFh Zeichen nicht verfügbar
  556. Anmerkung 1) liest async Puffer. 
  557.           2) entfernt den Tastaturcode nicht vom Puffer.
  558.  
  559.  
  560. Aufruf   AH 0Dh FOSSIL: Tastatur lesen, nicht warten
  561. Rückgabe AX IBM Tastaturauswahlcode oder
  562.             0FFFFh wenn kein Zeichen verfügbar ist
  563. Anmerkung 1) benutzt IBM-style Funktionstastenabbildung im höherwertigen Byte.
  564.           2) Scancodes für NICHT-Funktionstasten werden nicht benötigt, sind aber
  565.              mit enthalten.
  566.           3) entfernt den Tastaturcode nicht vom Puffer.
  567.  
  568.  
  569. Aufruf   AH 0Eh FOSSIL: Tastatur Eingabe mit warten
  570. Rückgabe AX IBM Tastaturauswahlcode
  571. Anmerkung gibt das nächstes Zeichen von der Tastatur zurück oder wartet wenn
  572.           kein Zeichen verfügbar ist.
  573.  
  574.  
  575. Aufruf   AH 0Fh aktivieren oder deaktivieren Flußsteuerung
  576.          AL Bitmuster beschreibt die angeforderte Flußsteuerung
  577.            Bits 0 XON/XOFF auf übertragen (überwachen XOFF solange gesendet wird)
  578.                 1 CTS/RTS (CTS auf übertragen/RTS auf empfangen)
  579.                 2 reserviert 
  580.                 3 XON/XOFF auf empfangen (senden XOFF sobald Puffer fast voll ist)
  581.                 4-7 nicht benutzt, FOSSIL spezielle Aufrufe zur Einstellung von 1
  582.          DX Portnummer (NOP falls DX= 00FFh)
  583. Rückgabe keine
  584. Anmerkung 1) Bit 2 ist reserviert für DSR/DTR, wird zur Zeit aber von keiner
  585.              Ausführung unterstützt .
  586.           2) Übertragungsflußsteuerung erlaubt dem anderen Ende den Sender zurückzuhalten
  587.              sobald es einen Überlauf bekommt. Die Empfangsflußsteuerung teilt dem FOSSIL
  588.              mit, falls dieser bewältigt wurde, um die Übertragung erneut zu versuchen.
  589.           3) wenn übertragen XON/XOFF eingeschaltet ist, hält der FOSSIL die Übertragung an
  590.              sobald ein XOFF empfangen wurde. Der FOSSIL nimmt die Übertragung wiederauf
  591.              sobald ein XON empfangen wurde.
  592.           4) eingeschaltetes CTS/RTS ermöglicht dem FOSSIL mit dem Übertragen aufzuhören,
  593.              sobald CTS gelöscht ist. Die Übertragung wird wiederaufgenommen, sobald CTS
  594.              gesetzt ist. Der FOSSIL hebt RTS auf, sobald der Empfangspuffer zu einem vorher
  595.              bestimmten Prozentsatz voll ist. Der FOSSIL setzt RTS wieder, sobald der Empfangspuffer
  596.              unter einem vorher bestimmten Prozentsatz geleert ist. Der Punkt an dem dies auftritt
  597.              bleibt dem jeweiligen FOSSIL Ausführer überlassen.
  598.           5) einschalten empfangen XON/XOFF ermöglicht dem FOSSIL ein XOFF zu senden,
  599.              sobald der Empfangspuffer zu einem vorher definierten Prozentsatz voll
  600.              ist. Eine XON wird gesendet, sobald der Empfangspuffer unter einem vorher
  601.              bestimmten Prozentsatz geleert ist. Der Punkt an dem dies auftritt
  602.              bleibt dem jeweiligen FOSSIL Ausführer überlassen.
  603.           6) Anwendungen die diese Funktion benutzen, sollten alle Bits auf ON setzen, auch
  604.              die im Halbbyte von AL. Da ist eine kompatible (aber nicht identische) FOSSIL
  605.              Treiber Ausführung die das obere Halbbyte zur Steuerung benutzt. Falls eine Anwendung
  606.              alle Bits im oberen Halbbyte auf 1 gesetzt hat, sollte diese immerlaufen
  607.              ungeachtet der Methode die von dem gegebenen Treiber benutzt wird.
  608.  
  609.  
  610. Aufruf   AH 10h erweiterte Ctrl-C/Ctrl-K Kontrolle und Übertragung An/Aus
  611.          AL Kennzeichen Bitmaskenbyte (Bit ist gesetzt falls aktiv)
  612.            Bits 0 aktivieren/deaktivieren Ctrl-C/Ctrl-K Kontrolle
  613.                 1 deaktivieren/aktivieren des Senders
  614.                 2-7 nicht benutzt 
  615.          DX Portnummer (NOP falls DX= 00FFh)
  616. Rückgabe AX Statusbyte
  617.             0000h control-C/K wurde nicht empfangen
  618.             0001h control-C/K wurde empfangen
  619. Anmerkung dies wird primär von Programmen benutzt, die kein Vertrauen an das XON/XOFF auf FOSSIL
  620.           Ebene haben (ähnlich wie BBS Software).
  621.  
  622.  
  623. Aufruf   AH 11h FOSSIL: einstellen aktuelle Cursorposition.
  624.          DH Zeile( Zeile) 0-24
  625.          DL Spalte 0-79
  626. Rückgabe keine
  627. Anmerkung 1) diese Funktion ist dasselbe wie der int 10h, fn 02h auf dem IBM PC.
  628.              Die Cursorposition wird in DX übergeben: Zeile in DH und Spalte in DL. Diese
  629.              Funktion behandelt den Bildschirm wie ein Koordinatensystem dessen Ursprung (0,0)
  630.              die obere linke Ecke von dem Bildschirm ist.
  631.           2) Zeile und Spalte beginnt bei 0.
  632.  
  633.  
  634. Aufruf   AH 12h FOSSIL: lesen aktuelle Cursorposition.
  635. Rücklauf DH Zeile
  636.          DL Spalte
  637. Anmerkung 1) Dasselbe wie int 10h/fn 03h in dem IBM PC BIOS. Die aktuelle
  638.              Cursorposition (dasselbe Koordinatensystem wie Funktion 16h)
  639.              wird in DX zurückgegeben.
  640.           2) Zeile und Spalte beginnt bei 0.
  641.  
  642.  
  643. Aufruf   AH 13h FOSSIL: einzelnes ANSI Zeichen am Bildschirm anzeigen.
  644.          AL Wert des Zeichen das angezeigt werden soll
  645. Rückgabe keine
  646. Anmerkung dieser Aufruf ist ablaufinvariant, da die ANSI Abarbeitung über DOS
  647.           durchgeführt wird.
  648.  
  649.  
  650. Aufruf   AH 14h FOSSIL: aktivieren oder deaktivieren Watchdog Abarbeitung
  651.          AL 00h deaktivieren Watchdog
  652.             01h aktivieren Watchdog
  653.          DX Portnummer (NOP falls DX= 00FFh)
  654. Rückgabe keine
  655. Anmerkung 1) dieser Aufruf ist die Ursache die den FOSSIL zum Neustart das System
  656.              veranlasst, falls das Carrier detect Signal für den spezifizierten
  657.              Port abfällt solange der Watchdog aktiviert ist.
  658.           2) der Port braucht nicht aktiv sein, damit diese Funktion arbeitet.
  659.  
  660.  
  661. Aufruf   AH 15h zeige Zeichen am Bildschirm an, benutze dabei BIOS Routinen
  662.          AL ASCII Wert des Zeichen das angezeigt werden soll
  663. Rückgabe keine
  664. Anmerkung 1) diese Funktion ist ablaufinvariant.
  665.           2) ANSI Abarbeitung wird nicht vorausgesetzt.
  666.  
  667.  
  668. Aufruf   AH 16h einfügen oder löschen einer Funktion in der Takteinheitenkette
  669.          AL 00h löschen einer Funktion
  670.             01h hinzufügen einer Funktion
  671.          ES:DX Adresse der Funktion
  672. Rückgabe AX 0000h erfolgreich
  673.             0FFFFh erfolglos
  674.  
  675.  
  676. Aufruf   AH 17h FOSSIL: Neustart System
  677.          AL Startart
  678.             00h Kaltstart
  679.             01h Warmstart
  680. Rückgabe keine
  681.  
  682.  
  683. Aufruf   AH 18h FOSSIL: lesen Block
  684.          CX maximale Anzahl der Zeichen die übertragen werden
  685.          DX Portnummer (NOP falls DX= 00FFh)
  686.          ES:DI Zeiger zum Anwenderpuffer
  687. Rückgabe AX Anzahl der Zeichen die übertragen wurden
  688. Anmerkung 1) dies Funktion wartet nicht auf mehr Zeichen falls der Wert in CX die
  689.              Anzahl der vorhandenen überschreitet.
  690.           2) ES:DI wird durch den Aufruf nicht verändert; der Anzahl der Bytes die
  691.              übertragen wurden, wird in AX zurückgegeben.
  692.  
  693.  
  694. Aufruf   AH 19h FOSSIL: schreiben Block
  695.          CX maximale Anzahl der Zeichen die übertragen werden
  696.          DX Portnummer (NOP falls DX= 00FFh)
  697.          ES:DI Zeiger zum Anwenderpuffer
  698. Rückgabe AX Anzahl der Zeichen die übertragen wurden
  699. Anmerkung ES und DI wird nicht verändert
  700.  
  701.  
  702. Aufruf   AH 1Ah FOSSIL: Break Signal senden, Start oder Ende
  703.          AL 00h senden 'break' beenden
  704.             01h senden 'break' starten
  705.          DX Portnummer (NOP falls DX= 00FFh)
  706. Rückgabe keine
  707. Anmerkung 1) Zurücksetzen aller Hindernisse zur Übertragungsflußsteuerung, wie XOFF
  708.              empfangen.
  709.           2) Initialisieren (fn 04h) oder Deinitialisieren (fn 05h) beendet einen aktiven break.
  710.           3) die Anwendung die "Länge" vom break bestimmen.
  711.  
  712.  
  713. Aufruf   AH 1Bh FOSSIL: rücklauf Information über der Treiber
  714.          CX Größe des Anwenderpuffers in Bytes
  715.          DX Portnummer (falls DX= 00FFh, Port Daten sind nicht zulässig)
  716.          ES:DI Zeiger zum Anwenderpuffer
  717. Rückgabe AX Anzahl Zeichen übertragen
  718.          ES:DI Anwenderpuffer Aufbau:
  719.                00h     Wort      Größe des Aufbaus in Bytes
  720.                02h     Byte      FOSSIL Treiber Version
  721.                03h     Byte      Revisionsebene von diesem Treiber
  722.                04h     dwort     FAR Zeiger zur ASCII ID Zeichenkette
  723.                08h     Wort      Größe des Eingabepuffers in Bytes
  724.                0Ah     Wort      Anzahl Bytes im Eingabepuffer
  725.                0Ch     Wort      Größe des Ausgabepuffers in Bytes
  726.                0Eh     Wort      Anzahl Bytes im Ausgabepuffer
  727.                10h     Byte      Bildschirmbreite in Zeichen
  728.                11h     Byte      Bildschirmhöhe in Zeichen
  729.                12h     Byte      aktuelle Baud-Rate, Computer zu Modem
  730.                                  (siehe Maske in Funktion 00h
  731. Anmerkung 1) das Baud-Rate Byte enthält die Bits die fn 00h benutzt um den Port
  732.              auf die Geschwindigkeit einzustellen.
  733.            2) die Felder die für einen einzelnen Port benutzt werden (Puffergröße, Platz im
  734.               Puffer, Baud-Rate) sind undefiniert falls Port= 0FFh oder eine ungültiger
  735.               Port in DX enthalten ist.
  736.            3) zusätzlich Information werden immer an diesen angefügt, deshalb ändern
  737.               sich diese Felder mit FOSSIL Revisionänderungen nicht.
  738.  
  739.  
  740. Aufruf   AH 7Eh FOSSIL: installieren einer externen Anwendung
  741.          AL zugewiesener Code zur externen Anwendung
  742.          ES:DX Zeiger zum Einsprungspunkt
  743. Rückgabe AX 1954h FOSSIL Treiber ist vorhanden
  744.             nicht 1954h FOSSIL Treiber ist nicht vorhanden
  745.          BH 00h scheiterte
  746.             01h erfolgreich
  747.          BL zugewiesener Code zur Anwendung (derselbe wie AL beim Aufruf)
  748. Anmerkung 1) Anwendungcodes 80h-0BFh sind unterstützt. Codes 80h-83h sind reserviert.
  749.           2) eine Fehlercode von BH= 00h und AX= 1954h bedeutet, daß eine andere externe
  750.              Anwendung schon mit dem Code in AL installiert wurde.
  751.           3) Anwendungen werden mit einem FAR Call aufgerufen und müssen einen
  752.              FAR Return durchführen.
  753.  
  754. Aufruf   AH 7Fh FOSSIL: entfernen einer externen Anwendung
  755.          AL zugewiesener Code zur externen Anwendung
  756.          ES:DX Zeiger zum Einsprungspunkt
  757. Rückgabe AX 1954h
  758.          BH 00h scheiterte
  759.             01h erfolgreich
  760.          BL zugewiesener Code zur Anwendung (derselbe wie AL beim Aufruf)
  761.  
  762.  
  763.  
  764.  ┌─────────────────────────────────────────────────────────────────────────────┐
  765.  │ Interrupt 15h Kassette I/O                                             3**8 │
  766.  └─────────────────────────────────────────────────────────────────────────────┘
  767.  (0:0054h)   1) umbenannt in "System Services" beim PS/2 Entwurf.
  768.              2) ausführen eines int 15h auf einem XT kann Ursache für ein Systemabsturz sein.
  769.                 Beim AT und später, Interrupts werden mit CLI ausgeschaltet sobald die
  770.                 Interrupt Service Routine aufgerufen wird, aber die meisten ROM
  771.                 Versionen schalten die Interrupts mit STI nicht wieder an.
  772.              3) Für den original IBM PC, int 15h gibt in AH= 80h zurück und CF ist gesetzt
  773.                 bei allen Aufrufen außer AH mit 0, 1, oder 2.
  774.              4) Für den PC/XT, int 15h gibt in AH= 86h zurück, CF ist gesetzt falls
  775.                 der Interrupt aufgerufen wird. (Das PC/XT ROM BIOS unterstützt den int 15h nicht)
  776.              5) Für den AT/339, int 15h gibt in AH= 86h zurück, CF ist gesetzt falls
  777.                 der Aufruf mit einem ungültigen Funktionscode erfolgte.
  778.  
  779.  
  780. Funktion 00h anschalten Kassettenmotor (PC, PCjr ausschließlich)
  781. Aufruf   AH 00h
  782. Rückgabe CF gesetzt wenn Fehler
  783.             AH Fehlercode
  784.                00h keine Fehler
  785.                01h CRC Fehler
  786.                02h schlechte Bandsignale
  787.                    keine Datenübergänge (PCjr)
  788.                03h keine Daten auf dem Band gefunden
  789.                    nicht benutzt (PCjr)
  790.                04h keine Daten
  791.                    kein Vorspann (PCjr)
  792.                80h ungültiger Befehl
  793.                86h keine Kassette vorhanden
  794.                    nicht zulässig in PCjr
  795. Anmerkung NOP für Systeme wo die Kassette nicht unterstützt wird.
  796.  
  797.  
  798. Funktion 01h ausschalten Kassettenmotor (PC, PCjr ausschließlich)
  799. Aufruf   AH 01h
  800. Rückgabe CF gesetzt wenn Fehler
  801.             AH Fehlercode( 86h)
  802. Anmerkung NOP für Systeme wo die Kassette nicht unterstützt wird.
  803.  
  804.  
  805. Funktion 02h lesen Blöcke von Kassette (PC, PCjr ausschließlich)
  806. Aufruf   AH 02h
  807.          CX Anzahl zu lesender Bytes
  808.          ES:BX Segment:Offset + 1 vom letzten gelesenen Byte
  809. Rückgabe CF gesetzt wenn Fehler
  810.             AH Fehlercode( 01h, 02h, 04h, 80h, 86h)
  811.          DX Anzahl der Bytes die gelesen wurden
  812.          ES:BX Zeiger auf das letzte geschriebene Byte
  813. Anmerkung 1) NOP für Systeme wo die Kassette nicht unterstützt wird.
  814.           2) Kassettentransaktionen lesen normalerweise 256 Byte große Blöcke.
  815.  
  816.  
  817. Funktion 03h schreibe Datenblöcke auf Kassette (PC, PCjr ausschließlich)
  818. Aufruf   AH 03h
  819.          CX Anzahl zu schreibender Bytes
  820.          ES:BX Zeiger zum Datenpuffer
  821. Rückgabe CF gesetzt wenn Fehler
  822.             AH Fehlercode( 80h, 86h)
  823.          CX 00h
  824.          ES:BX Zeiger zum letzten geschriebenen Byte +1
  825. Anmerkung 1) NOP für Systeme wo die Kassette nicht unterstützt wird.
  826.           2) der letzte Blocken wird auf 256 Bytes mit Nullen aufgefüllt, falls benötigt.
  827.           3) es werden bei diesem Service keine Fehler zurückgegeben
  828.  
  829.  
  830. Funktion 0Fh ESDI formatieren Einheit periodisch Interrupt( PS/2 50+) 
  831. Aufruf   AH 0Fh
  832.          AL Phasencode
  833.             00h reserviert
  834.             01h Oberflächenanalyse
  835.             02h Formatierung
  836. Rückgabe CF gelöscht falls Formatierung fortsetzt werden soll
  837.             gesetzt falls es beendet werden sollt
  838. Anmerkung 1) ruft das BIOS auf dem ESDI Festplattenlaufwerksadapter auf/dies erfolgt während
  839.              der Formatierung oder der Oberflächenanalyse nachdem ein Zylinder vervollständigt ist.
  840.           2) dieser Funktionsaufruf kann durch ein Programm belegt sein, sodaß es erkennen kann,
  841.              wie jede Zylinder formatiert oder analysiert ist. Das Programm kann
  842.              die Interrupts für jede Phase zählen um den aktuellen Zylinder festzustellen.
  843.           3) der vorgegebene BIOS Handler gibt ein gesetztes CF für diese Funktion zurück.
  844.  
  845.  
  846. Funktion 10h TopView API Funktionsaufrufe (TopView)
  847.                 siehe Kapitel 17
  848.  
  849.  
  850. Funktion 20h PRINT.COM (DOS 3.1+ intern) (AT, XT/286, PS/2 50+)
  851. Aufruf   AH 20h
  852.          AL Unterfunktion
  853.             00h ausschalten kritisches Bereichskennzeichen
  854.             01h einstellen kritisches Bereichskennzeichen
  855.                 ES:BX Zeiger zum Kennzeichenbyte gesetzt solange DOS Aufrufe aktiv sind
  856.             10h einstellen SysReq Routine
  857.             11h Abschluß der SysReq Routine (ausschließlich Software)
  858.  
  859.  
  860. Funktion 21h Lesen Power-On Selbsttest (POST) Fehleraufzeichnung (PS/2 50+)
  861. Aufruf   AH 21h
  862.          AL 00h Lesen POST Aufzeichnungen
  863.             01h Schreiben POST Aufzeichnungen
  864.          BH Gerät ID
  865.          BL Gerät Fehlercode
  866. Rückgabe CF gesetzt wenn Fehler
  867.          AH Zustand
  868.             00h erfolgreich gelesen
  869.                 BX Anzahl POST Fehlercodes gespeichert
  870.                 ES:DI Zeiger zur Fehleraufzeichnung
  871.             01h Liste voll
  872.             80h ungültiger Befehl
  873.             86h Funktion wird nicht unterstützt
  874. Anmerkung die Aufzeichnung ist ein Reihe von Wörtern, das erste Byte identifiziert den
  875.           Fehlercode und das zweite ist das Gerät ID.
  876.  
  877.  
  878. Funktion 40h Lesen/modifizieren Profile (Convertible)
  879. Aufruf   AH 40h
  880.          AL 00h lesen System Profile in CX, BX
  881.             01h schreiben System Profile von CX, BX
  882.             02h lesen internes Modem Profile in BX
  883.             03h schreiben internes Modem Profile von BX
  884.          BX profile Information
  885. Rückgabe BX internes Modem Profile (von 02h)
  886.          CX, BX System Profile (von 00h)
  887.  
  888.  
  889. Funktion 41h warten auf ein externes Ereignis (Convertible)
  890. Aufruf   AH 41h
  891.          AL Bedingungstyp
  892.          Bits 0-2       Bedingung zum Warten auf
  893.                         0, 0, 0 irgendein externes Ereignis
  894.                         0, 0, 1 vergleichen und Rücksprung falls gleich
  895.                         0, 1, 0 vergleichen und Rücksprung falls nicht gleich
  896.                         0, 1, 1 testen und Rücksprung falls nicht Null
  897.                         1, 0, 0 testen und Rücksprung falls Null
  898.                 3       reserviert
  899.                 4       0 Anwender Byte
  900.                         1 Portadresse 
  901.                 5-7     reserviert
  902.          BH Bedingungsvergleich oder Maskenwert
  903.             Bedingungcodes:
  904.             00h irgendein externes Ereignis
  905.             01h vergleichen und Rücksprung falls gleich
  906.             02h vergleichen und Rücksprung falls nicht gleich
  907.             03h test und Rücksprung falls nicht Null
  908.             04h test und Rücksprung falls Null
  909.          BL Zeitüberschreitung Wert in 55 Millisekunden Einheiten
  910.             00h wenn keine Zeitbegrenzung
  911.          DX I/O Portadresse (falls AL Bit 4= 1)
  912.          ES:DI Zeiger zum Anwender Byte (falls AL Bit 4= 0)
  913.  
  914.  
  915. Funktion 42h Anforderung Systemabschaltung (Convertible)
  916. Aufruf   AH 42h
  917.          AL 00h benutze System Profile
  918.             01h Unterbrechnung erzwingen ungeachtet vom Profile
  919. Rückgabe Unbekannt
  920.  
  921.  
  922. Funktion 43h lesen Systemstatus (Convertible)
  923. Aufruf   AH 43h
  924. Rückgabe AL Statusbyte
  925.             Bit 0 LCD nicht angeschlossen
  926.                 1 reserviert 
  927.                 2 RS232/parallel angeschaltet
  928.                 3 internes Modem angeschaltet
  929.                 4 Netz ativiert beim Alarm
  930.                 5 ungültige Uhrzeit
  931.                 6 externes Netzteil in Benutzung
  932.                 7 Batteriespannung niedrig
  933.  
  934.  
  935. Funktion 44h (De)aktivieren Energie für internes Modem (Convertible)
  936. Aufruf   AH 44h
  937.          AL 00h Energie auschalten
  938.             01h Energie anchalten
  939. Rückgabe Unbekannte
  940.  
  941.  
  942. Funktion 4Fh OS Hook - Tastatur abstellen (außer PC, PCjr, und XT)
  943. Aufruf   AH 4Fh
  944.          AL Auswahlcode, CF gesetzt
  945. Rückgabe AL Auswahlcode
  946.          CF gesetzt Abarbeitung gewünscht
  947.             gelöscht Auswahlcode wird nicht benötigt
  948. Anmerkung 1) aufgerufen vom int 9 Handler für jeden Tastenanschlag zum übersetzen der Auswahlcodes.
  949.           2) ein OS oder ein TSR kann diese Funktion benutzen, um die unbearbeiteten Tastatureingaben
  950.              zu filrtern. Der neue Handler kann den Auswahlcode ersetzen, denselben Auswahlcode
  951.              zurückgeben, oder das CF setzen um die Eingabe zu verwerfen.
  952.              Der vorgegebene BIOS Routine gibt einfach den unveränderten
  953.              Auswahlcode zurück.
  954.           3) ein Programm kann den int 15h/fn0C0h aufrufen, um festzustellen ob das
  955.              das BIOS auf dem Hauptrechner die Tastaturabschaltung unterstützt.
  956.           4) intern benutzt von PC-MOS/386 v4.00+ zur Tastatureingabe.
  957.  
  958.  
  959. Funktion 52h MicroSoft RAM-Residente Software Spezifikationen 1.0
  960.              dieser Standard  wurde 1986 von MicroSoft vorgeschlagen, als eine allgemein
  961.              gültige Schnittstelle für TSR Programme. Es scheint weitgehend unbekannt
  962.              zu sein oder wird einfach mißachtet.
  963.   
  964. Funktion 0: holen Programminformation durch den Namen
  965. Aufruf   DS:BX das Programm ID von dem memory-residenten Programm das gesucht wird
  966. Rückgabe AL 0FFh falls das Programm installiert ist
  967.             00h falls es nicht installiert ist
  968.          CX die Nummer des Programms. Der erste Programm wird installiert mit der
  969.                 Nummer 0, das zweite Programm mit der Nummer 1, usw. Bei Benutzen
  970.                 eines dynamischen numerierenden Systems, vermeiden wir Konflikte
  971.                 zwischen Programme die dasselbe ID wählen. Auch ist dies ein guter Weg
  972.                 um alle speicherresistente Programme mit der Funktion 1 zu untersuchen .
  973.          ES:DX Zeiger zu der Programm ID Aufzeichnung (PIDR)
  974. Anmerkung dies Funktion testet ob ein Programm speicherresistent ist und gibt einen Zeiger
  975.           zu dessen Programminformation zurück, falls es speicherresistent ist. Um diese Funktion
  976.           zu benutzen, DS:BX auf das Programm ID zeigen. Jede installierte Programm
  977.           überprüft das Programm ID mit seinem eigenen internen Programm ID.
  978.   
  979. Funktion 1: holen Programminformation durch die Nummer
  980. Aufruf   CX Programmnummer für welches wir die Information benötigen
  981.   
  982. Rückgabe AL 0FFh falls das Programm installiert ist
  983.             00h falls es nicht installiert ist
  984.          ES:DX Zeiger zu der Programm ID Aufzeichnung (PIDR)
  985. Anmerkung diese Funktion gibt genau dieselben Information wie Funktion 0 zurück. Die
  986.           einzige Differenz ist, wie das benötigte Programm identifiziert wird, welches
  987.           durch seine Position in der Interruptkette bestimmt wird; Programm 0 ist das
  988.           letzte Programm in der Kette, und das erste Programm in der Kette (normalerweise
  989.           das letzte installierte Programm) hat die höchste Nummer.
  990.   
  991. Funktion 2: aktivieren Programm 
  992. Aufruf   CX Nummer des Programms welches aktiviert werden soll
  993.          DS:BX Aktivierungaufzeichnung. Dies Aufzeichnung übergibt dem Programm Information
  994.                wie und was in dem Programm aktiviert werden soll.
  995. Rückgabe keine
  996. Anmerkung dies Funktion aktiviert eins von den installierten Programmen. Es ist nützlich
  997.           falls viele Schreibtisch Anwendungen über ein Bedienungsfeld gesteuert werden
  998.           sollen, ähnlich dem was in SideKick benutzt wird. Es kann auch dazu benutzt werden,
  999.           um Programm wie ProKey einen benannten Makro unter Programmsteuerung ausführen zulassen,
  1000.           oder mit SideKick eine von den Schreibtischanwendungen von einem
  1001.           Programm oder einer Stapeldatei aufzurufen.
  1002.   
  1003. Funktion 3: Programm deaktivieren
  1004. Aufruf   CX Nummer des Programms welches deaktiviert werden soll
  1005.          DS:BX Deaktivierungsaufzeichnung. Dies Aufzeichnung übergibt dem Programm Information
  1006.                wie und was in dem Programm deaktiviert werden soll.
  1007. Rückgabe keine
  1008. Anmerkung diese Funktion ist das Gegenteil von Funktion 2 (aktivieren Programm).
  1009.  
  1010. Funktion 4: Programm einschalten
  1011. Aufruf   CX Nummer des Programms welches eingeschaltet werden soll
  1012.          DS:BX Einschaltmaskenaufzeichnung. Dies Maske beschreibt welche Merkmale eingeschaltet
  1013.          werden sollen. Ein Aufzeichnung die nichts enthält, ermöglicht alle Merkmale.
  1014. Rücklauf keine 
  1015. Anmerkung dies Funktion ist der Gegenteil von Funktion 5 (ausschalten Programm).
  1016.   
  1017. Funktion 5: Programm ausschalten
  1018. Aufruf   CX Nummer des Programms welches ausgeschaltet werden soll
  1019.          DS:BX Ausschaltmaskenaufzeichnung. Dies Maske beschreibt welche Merkmale ausgeschaltet
  1020.          werden sollen. Eine Aufzeichnung die nichts enthält, schaltet alle Merkmale aus.
  1021. Rücklauf keine 
  1022. Anmerkung manchmal ist es notwendig ein Programm auszuschalten um Konflikte mit anderen
  1023.           Programmen zu verhindern, diese Funktion ist dafür gedacht.
  1024.           Diese Funktion ist das Gegenteil von Funktion 4 (einschalten Programm).
  1025.   
  1026.  
  1027. Funktion 70h EEROM Handler (Tandy 1000HX)
  1028. Aufruf   AH 00h lesen vom EEROM
  1029.             BL 00h
  1030.                01h schreiben zum EEROM
  1031.             BL Welches Wort geschrieben werden soll (0-15)
  1032.             DX Wert des zu schreibenden Wortes
  1033. Rückgabe DX (AH= 00h) Wert des Wortes
  1034.          CF gesetzt wenn Fehler (System ist kein Tandy 1000 HX)
  1035.  
  1036.  
  1037. Funktion 80h OS Hook - Gerät öffnen (AT, XT/286, PS/2)
  1038. Aufruf   AH 80h
  1039.          BX Gerät ID
  1040.          CX Prozeß ID
  1041. Rückgabe CF gesetzt wenn Fehler
  1042.          AH Status
  1043. Anmerkung 1) erwirbt die Rechte an einem logisch Gerät für einen Vorgang.
  1044.           2) dieser Aufruf, zusammen mit fns 81h und 82h, definiert ein einfaches Protokoll
  1045.              daß benutzt werden kann, um über die Verwendung von Geräten bei mehrfacher
  1046.              Benutzung zu entscheiden. Ein Multitasking Programmmanager sollte den int 15h
  1047.              umleiten um den geeigneten Service zu liefern.
  1048.           3) die vorgegebene BIOS Routine dieser Funktion gibt einfach in AH= 00h
  1049.              zurück und das CF wird gelöscht.
  1050.  
  1051.  
  1052. Funktion 81h Gerät schließen (AT, XT/286, PS/2)
  1053. Aufruf   AH 81h
  1054.          BX Gerät ID
  1055.          CX Prozeß ID
  1056. Rückgabe CF gesetzt wenn Fehler
  1057.          AH Status
  1058. Anmerkung 1) Freigeben eines logischen Gerätes nach einem abgearbeiteten Vorgang.
  1059.           2) Ein Multitasking Programmmanager sollte den int 15h umleiten um den
  1060.              geeigneten Service zu liefern.
  1061.           3) die vorgegebene BIOS Routine dieser Funktion gibt einfach in AH= 00h
  1062.              zurück und das CF wird gelöscht.
  1063.  
  1064.  
  1065. Funktion 82h Programmbeendigung (AT, XT/286, PS/2)
  1066.          AH 82h
  1067.          BX Gerät ID
  1068. Rückgabe CF gesetzt wenn Fehler
  1069.          AH Status
  1070. Anmerkung 1) schließt alle logischen Geräte die mit Funktion 80h geöffnet wurden.
  1071.           2) Ein Multitasking Programmmanager sollte den int 15h umleiten um den
  1072.              geeigneten Service zu liefern.
  1073.           3) die vorgegebene BIOS Routine dieser Funktion gibt einfach in AH= 00h
  1074.              zurück und das CF wird gelöscht.
  1075.  
  1076.  
  1077. Funktion 83h Ereignis abwarten (AT, XT/286, Convertible, PS/2 50+)
  1078. Aufruf   AH 83h
  1079.          AL 00h einstellen Intervall
  1080.             01h abbrechen
  1081.          CX:DX Anzahl Mikrosekunden abwarten (eine Einheit sind 976 Mikrosekunden)
  1082.          ES:BX Zeiger zum Semaphorkennzeichen (Bit 7 ist gesetzt sobald der Intervall abläuft)
  1083.                (Zeiger zum Speicher des Aufrufers) (einige Quellen schreiben das Bit 15 gesetzt ist)
  1084. Rückgabe CF gesetzt (1) falls Funktion schon beschäftigt ist
  1085. Anmerkung 1) erbittet das setzen des Semaphors nach einem spezifizierten Intervall oder
  1086.              annulliert ein vorhergehende Anforderung.
  1087.           2) der aufrufende Programm ist verantwortlich für das Löschen des Semaphors
  1088.              bevor diese Funktion angefordert wird.
  1089.           3) die eigentliche Dauer ist immer ein mehrfaches Integral von
  1090.              976 Mikrosekunden. Die CMOS Datum/Taktgeber Chip Interrupts werden
  1091.              benutzt um diese Funktion zu realisieren.
  1092.           4) diese Funktion erlaubt programmierte, hardware-unabhängige Verzögerungen in
  1093.              einer feineren Auflösung als dies durch die Beutzung der MS-DOS
  1094.              Zeitfunktionen (int 21h/fn 2Ch) möglich wäre. Diese gibt die Zeit in
  1095.              hunderstel Sekunden zurück.
  1096.           5) CX:DX ist eine 4-Byte Ganzzahl.
  1097.  
  1098.  
  1099. Funktion 84h lesen Joystick Einstellungen (AT, XT/286, PS/2)
  1100. Aufruf   AH 84h
  1101.          DX 00h lesen der aktuellen Schaltereinstellungen (Rückgabe in AL)
  1102.             01h Stellung der Joysticks lesen
  1103. Rückgabe CF gesetzt wenn Fehler
  1104.          (fn 00h)
  1105.          AL Schaltereinstellungen (Bits 7-4)
  1106.          ( fn 01h) 
  1107.         AX Joystick A (X) Wert
  1108.         BX Joystick A (Y) Wert
  1109.         CX Joystick B (X) Wert
  1110.         DX Joystick B (Y) Wert
  1111. Anmerkung 1) ein Fehler wird zurückgegeben, falls DX keine zulässige Unterfunktion enthält.
  1112.           2) wenn kein Spieleadapter installiert ist, geben alle Werte 00h zurück.
  1113.           3) Bei Benutzung eines 250K Ohm Joysticks, liegen die Potentiometer Werte
  1114.              gewöhnlich im Bereich von 0-416 (0000h-01A0h).
  1115.  
  1116.  
  1117. Funktion 85h System Anforderung (SysReq) Taste gedrückt (außer PC, PCjr, XT)
  1118. Aufruf   AH 85h
  1119.          AL 00h Taste gedrückt
  1120.             01h Taste losgelassen
  1121. Rückgabe CF gesetzt wenn Fehler
  1122.          AH Fehlercode
  1123. Anmerkung 1) wird durch die BIOS Tastaturroutine aufgerufen, sobald die SysReq Taste erkannt wurde.
  1124.           2) der BIOS Handler für diesen Aufruf ist eine Dummy-Routine die immer einen
  1125.              erfolgreichen Status meldet, falls diese nicht mit einer ungültigen Unterfunktion in AL aufgerufen wurde.
  1126.           3) Ein Multitasking Programmmanager sollte den int 15h umleiten um
  1127.              sich zu melden sobald der Anwender die SysReq Taste betätigt.
  1128.  
  1129.  
  1130. Funktion 86h Verzögern (außer PC, PCjr, XT)
  1131.          AH 86h
  1132.          CX:DX 4-Byte Ganzzahl, Anzahl Mikrosekunden verzögern
  1133. Rückgabe CF gelöschen nach der Verzögerung
  1134.          CF gesetzt unmittelbar beim auftreten von Fehlern
  1135. Anmerkung 1) Suspendiert das aufrufenden Programm für ein spezifizierten Intervall in Mikrosekunden.
  1136.           2) die eigentliche Dauer ist immer ein mehrfaches Integral von
  1137.              976 Mikrosekunden.
  1138.           3) diese Funktion erlaubt programmierte, hardware-unabhängige Verzögerungen in
  1139.              einer feineren Auflösung als dies durch die Beutzung der MS-DOS
  1140.              Zeitfunktionen (int 21h/fn 2Ch) möglich wäre. Diese gibt die Zeit in
  1141.              hunderstel Sekunden zurück.
  1142.  
  1143.  
  1144. Funktion 87h Speicherblock verschieben (ausschließlich 2-3-486 Maschinen)
  1145.          AH 87h
  1146.          CX Anzahl der zu verschiebenden Worte
  1147.          ES:SI Zeiger zur Global Deskriptor Tabelle( GDT)
  1148.                Offset 00h-0Fh reserviert, auf Null gesetzt
  1149.                       00h Null Deskriptor
  1150.                       08h uninitialisiert, wird erzeugt im GDT Deskriptor
  1151.                   10h-11h Quelle Segmentlänge in Bytes
  1152.                           (2*CX-1 oder größer)
  1153.                   12h-14h 24-bit gerade Quelladresse
  1154.                       15h Zugriffsrechte Byte (immer 93h)
  1155.                   16h-17h reserviert, auf Null gesetzt
  1156.                   18h-19h Ziel Segmentlänge in Bytes
  1157.                           (2*CX-1 oder größer)
  1158.                   1Ah-1Ch 24-bit gerade Zieladresse
  1159.                       1Dh Zugriffsrechte Byte (immer 93h)
  1160.                   1Eh-2Fh reserviert, auf Null gesetzt
  1161.                       20h uninitialisiert, benutzt von BIOS
  1162.                       28h uninitialisiert, wird erzeugt im SS Deskriptor
  1163. Rückgabe CF gesetzt wenn Fehler
  1164.          AH Status
  1165.             00h Quelle wurde an das Ziel kopiert
  1166.             01h Paritätsfehler
  1167.             02h Ausnahme Interrupt Fehler
  1168.             03h Auswertung der Adresszeile 20 scheiterte
  1169. Anmerkung 1) die GDT Tabelle setzt sich aus sechs 8-byte Deskriptoren zusammen, die
  1170.              von der CPU in geschützten Modus benutzt wird. Der vier Deskriptoren
  1171.              der Offsets 00h-0Fh und 20h-2Fh werden durch das BIOS gefüllt, bevor der
  1172.              CPU Modus umgeschaltet wird.
  1173.           2) die Adressen die in der Deskriptor Tabelle benutzt werden, sind gerade (physisch)
  1174.              24-bit Adressen in dem Bereich 000000h-0FFFFFFh - keine Segmente und
  1175.              Offsets - mit dem niederwertigen Byte an der niedrigsten Adresse und dem
  1176.              höherwertigen Byte an der höchsten Adresse.
  1177.           3) Die Interrupts sind während dieses Aufrufes ausgeschaltet; kann zu Störungen
  1178.              beim arbeiten mit comm Programmen, Netzwerktreiber, oder anderer Software führen,
  1179.              die sich prompten Service von Hardware Interrupts verlassen.
  1180.           4) Dieser Aufruf ist nicht zulässig in der OS/2 Kompatibilitäts Box.
  1181.           5) Der Aufruf verschiebt ein Speicherblock von irgendeiner Adresse im echten
  1182.              oder geschützten Modus zu igendeiner anderen in den beiden Modi.
  1183.  
  1184.  
  1185. Funktion 88h Größe des Erweiterungsspeichers ermitteln (AT, XT/286, PS/2)
  1186. Aufruf   AH 88h
  1187. Rückgabe AX Anzahl zusammenhängender 1K Blöcke des Erweiterungsspeichers
  1188.             beginnent bei der Adresse 1024k
  1189. Anmerkung dieser Aufruf funktioniert nicht in der OS/2 Kompatibilitäts Box.
  1190.  
  1191.  
  1192. Funktion 89h Prozessor in geschützten Modus umschalten (AT, XT/286, PS/2)
  1193. Aufruf   AH 89h
  1194.          BH Interruptnummer für IRQ0, geschrieben zu ICW2 von 8259 PIC #1
  1195.             (muß durch 8 teilbar sein, entscheidet IRQ0-IRQ7)
  1196.          BL Interruptnummer für IRQ8, geschrieben zu ICW2 von 8259 PIC #2
  1197.             (muß durch 8 teilbar sein, entscheidet IRQ8-IRQ15)
  1198.          ES:SI Zeiger zur 8-Einträge umfassende Deskriptor Tabelle für geschützten Modus:
  1199.                Offset 00h Null Deskriptor, initialisiert mit Null
  1200.                       08h GDT Deskriptor
  1201.                       10h IDT (Interrupt Deskriptor Tabelle) Deskriptor
  1202.                       18h DS, Datensegment des Benutzers
  1203.                       20h ES, Extrasegment des Benutzers
  1204.                       28h SS, Stacksegment des Benutzers
  1205.                       30h CS, Codesegment des Benutzers
  1206.                       38h uninitialisiert, benutzt zur Erstellung eines Deskriptors
  1207.                           für das BIOS Codesegment
  1208. Rückgabe CF gesetzt wenn Fehler
  1209.             AH 0FFh Fehler beim schalten der Adresszeile 20
  1210.          CF gelöscht Funktion erfolgreich (CPU ist im geschützten Modus)
  1211.             AH 00h
  1212.             CS benutzerbestimmt Selektor
  1213.             DS benutzerbestimmt Selektor
  1214.             ES benutzerbestimmt Selektor
  1215.             SS benutzerbestimmt Selektor
  1216. Anmerkung der Anwender muß die ersten sieben Deskriptoren initialisieren; der achte
  1217.           wird vom BIOS gefüllt, um eine Adressierbarkeit für seine eigene Ausführung zu liefern.
  1218.           Der aufrufende Programm kann den achten Deskriptor nach Beendigung dieser
  1219.           Funktion modifizieren und benutzen.
  1220.  
  1221.  
  1222. Funktion 90h Schleife Gerät ist beschäftigt (außer PC, PCjr, XT)
  1223. Aufruf   AH 90h
  1224.          AL vordefinierter Gerättypen Code:
  1225.             00h Festplatte                        (kann Zeit überschreiten)
  1226.             01h Diskette                          (kann Zeit überschreiten)
  1227.             02h Tastatur                          (keine Zeitüberschreitung möglich)
  1228.             03h PS/2 pointing device              (kann Zeit überschreiten)
  1229.             80h Netzwerk                          (keine Zeitüberschreitung möglich)
  1230.            0FCh Festplatte zurücksetzen (PS/2)    (kann Zeit überschreiten)
  1231.            0FDh Diskettenmotor Start              (kann Zeit überschreiten)
  1232.            0FEh Drucker                           (kann Zeit überschreiten)
  1233.          ES:BX Zeiger zum Anforderungsblock für Typencodes 80h bis 0FFh
  1234.                (für Netzwerk Adapter ES:BX ist ein Zeiger zum Netzsteuerungsblock)
  1235. Rückgabe CF gesetzt falls Wartezeit um ist
  1236.             gelöscht falls Treiber warten muß
  1237. Anmerkung 1) benutzt von NETBIOS. 
  1238.           2) auswählbar Typencodes sind wie folgt belegt:
  1239.              00h-7Fh nicht ablaufinvariante Geräte; OS entscheidet den Zugriff
  1240.              auf mehrfach aufrufbare serielle Geräte
  1241.              80h-0BFh ablaufinvariant Geräte; ES:BX zeigt zu einen eindeutigen Kontrollblock
  1242.             0C0h-0FFh nur Warten Aufrufe, kein POST int 15/fn 91h Ergänzungsaufruf
  1243.           3) aufgerufen von dem BIOS Festplatten, Drucker, Netzwerk, und Tastatur Handler
  1244.              um ein programmiertes Warten für den I/O Abschluß durchzuführen.
  1245.           4) Ein Multitasking Programmmanager sollte den int 15h/fn 90h umleiten um
  1246.              andere Aufgaben zu versenden solange die I/O Operation aktiv ist.
  1247.           5) die vorgegebene BIOS Routine dieser Funktion gibt einfach in AH= 00h
  1248.              zurück und das CF wird gelöscht.
  1249.  
  1250.  
  1251. Funktion 91h Interrupt vervollständigen (AT, XT/286, PS/2 50+)
  1252. Aufruf   AH 91h
  1253.          AL Typencode (siehe AH= 90h vorher)
  1254.             00h-7Fh mehrfach aufrufbare serielle Geräte
  1255.             80h-0BFh ablaufinvariante Geräte
  1256.          ES:BX Zeiger zum Anforderungsblock für Typenccodes 80h bis 0BFh
  1257. Rückgabe AH 00h
  1258. Anmerkung 1) benutzt von NETBIOS. 
  1259.           2) aufgerufen vom BIOS Festplatten, Netzwerk, und Tastatur Handler um zu
  1260.              signalisieren das die I/O Operation abgeschlossen oder das Gerät bereit ist.
  1261.           3) vordefinierte Gerätarten die den Geräte POST benutzen können sind:
  1262.              00H Festplatte                  (kann Zeit überschreiten)
  1263.              01H Diskette                    (kann Zeit überschreiten)
  1264.              02H Tastatur                    (keine Zeitüberschreitung möglich)
  1265.              03H PS/2 pointing device        (kann Zeit überschreiten)
  1266.              80H Netzwerk                    (keine Zeitüberschreitung möglich)
  1267.           4) die BIOS Drucker Routine benutzt diese Funktion nicht, weil die
  1268.              Druckerausgabe nicht Interruptgesteuert ist.
  1269.           5) Ein Multitasking Programmmanager sollte den int 15h/fn 91h umleiten um
  1270.              andere Aufgaben durchzuführen, sobald die I/O Operation abgeschlossen ist.
  1271.           6) die vorgegebene BIOS Routine dieser Funktion gibt einfach in AH= 00h
  1272.              zurück und das CF wird gelöscht.
  1273.  
  1274.  
  1275. Funktion 0C0h Feststellen Systemkonfiguration (XT nach 1/10/86, PC Convertible,
  1276.                                                XT/286, AT, PS/2) 
  1277. Aufruf   AH 0C0h
  1278. Rückgabe CF gesetzt falls das BIOS den Aufruf nicht unterstützt
  1279.          ES:BX Zeiger zur ROM System Deskriptor Tabelle
  1280.            Bytes 00h-01h Anzahl Bytes in der folgenden Tabelle (norm. 16 Bytes)
  1281.                  02h System ID Byte; siehe Abschnitt 2 zur Interpretation
  1282.                  03h sekundär ID Byte unterscheidet zwischen AT und XT/286, etc.
  1283.                  04h BIOS Revisionsebene, 0 für erste Freigabe, 1 für zweite, etc.
  1284.                  05h Besonderheiten Informationsbyte
  1285.                      Bits 0 reserviert
  1286.                      1 Mikro Kanal Bus (an Stelle von ISA oder EISA)
  1287.                      2 erweiterter BIOS Bereich ab 640k
  1288.                      3 warten auf ein externes Ereignis wird unterstützt (int 15fn41)
  1289.                        benutzt beim Convertible; reserviert bei PS/2 Systemen
  1290.                      4 kbd intrcpt: int 15h, fn 04h nach int 09h aufgerufen
  1291.                      5 Echtzeituhr installiert
  1292.                      6 zweiter 8259 installiert (Kaskade IRQ2)
  1293.                      7 DMA Kanal 3 - benutzt vom Festplatten BIOS
  1294.                  06h Unbekannte (auf 0 gesetzt) (reserviert von IBM)
  1295.                  07h Unbekannte (auf 0 gesetzt) (reserviert von IBM)
  1296.                  08h Unbekannte (auf 0 gesetzt)
  1297.                  09h Unbekannte (auf 0 gesetzt) (Award BIOS Urheberrecht hier)
  1298. Anmerkung 1) Int 15h ist auch benutzt für den Multitask Hook auf PS/2 Maschinen.
  1299.                      Bis jetzt keine Register Einstellungen verfügbar.
  1300.           2) der 1/10/86 XT BIOS gibt einen falschen Wert im Besonderheiten Byte zurück.
  1301.  
  1302.  
  1303. Funktion 0C1h Rückgabe erweiterter BIOS Datenbereich Segmentadresse (PS/2)
  1304. Aufruf   AH 0C1h
  1305. Rückgabe CF gesetzt wenn Fehler
  1306.          ES Segment vom XBIOS Datenbereich
  1307. Anmerkung 1) der XBIOS Datenbereich wird am oberen Ende des konventionellen
  1308.              Speicher während der POST (Power-On-Self-Test) abläuft belegt.
  1309.           2) das Wort an 0040:0013h (Speichergröße) wird aktualisiert, damit der
  1310.              verfügbare Speicher für DOS und Anwenderprogramme zurückgegeben wird.
  1311.           3) das erste Byte im XBIOS Datenbereich ist initialisiert mit seiner Länge in K.
  1312.           4) ein Programm kann durch den int 15h/fn 0C0h überprüfen ob der XBIOS
  1313.              Datenbereich existiert.
  1314.  
  1315.  
  1316. Funktion 0C2h pointing device BIOS Schnittstelle (DesQview 2.x) (PS/2)
  1317. Aufruf   AH 0C2h
  1318.          AL 00h aktivieren/deaktivieren pointing device
  1319.                 BH 00h deaktivieren
  1320.                    01h aktivieren
  1321.          01h zurücksetzen pointing device
  1322.              zurücksetzen der Maus oder ein anderes pointing device
  1323.              setzen der Abtastrate, Auflösung, und andere Kenndaten auf ihre
  1324.              vorgegebenen Werte.
  1325.              Rückgabe BH Gerät ID ( 0= erstes)
  1326.              Anmerkung 1) nach einem zurücksetzen, der Status des
  1327.                                  pointing device ist wie folgt:
  1328.                                  ausgeschaltet; 
  1329.                                  Abtastrate ist 100 Meldungen pro Sekunde;
  1330.                                  Auflösung ist 4 Schritte pro Millimeter;
  1331.                                  Skalierung ist 1 zu 1.
  1332.                        2) die Paketgröße der Daten bleibt unverändert bei dieser fn.
  1333.                        3) Anwendungen können die Unterfunktionen der fn 0C2h benutzen,
  1334.                                 um die Geärte auf andere Werte zu initialisieren und
  1335.                                 dann das Gerät mit fn 00h aktivieren.
  1336.                        4) BL ist wird geändert.
  1337.          02h einstellen Abtastrate
  1338.              BH     00h      10/Sekunde
  1339.                     01h      20/Sekunde
  1340.                     02h      40/Sekunde
  1341.                     03h      60/Sekunde
  1342.                     04h      80/Sekunde
  1343.                     05h     100/Sekunde (vorgegeben)
  1344.                     06h     200/Sekunde
  1345.          03h einstellen Auflösung
  1346.              BH     00h     ein Schritt pro mm
  1347.                     01h     zwei Schritte pro mm
  1348.                     02h     vier Schritte pro mm (vorgegeben)
  1349.                     03h     acht Schritte pro mm
  1350.          04h Typ des pointing device feststellen
  1351.              Rückgabe BH ID Code für die Maus oder anderes pointing device
  1352.          05h Initialisieren pointing device Schnittstelle
  1353.              setzten der Paketgröße der Daten für die Maus oder anderes pointing
  1354.              device, und initialisieren der Auflösung, Abtastrate und der Skalierung
  1355.              auf ihre vorgegeben Werte.
  1356.              BH Paketgröße Daten (1-8 Bytes)
  1357.              Anmerkung nach diesem Arbeitsgang, der Status des pointing device
  1358.                                 ist wie folgt:
  1359.                                 a) ausgeschaltet;
  1360.                                 b) Abtastrate ist 100 Meldungen pro Sekunde;
  1361.                                 c) Auflösung ist 4 Schritte pro Millimeter;
  1362.                                 d) Skalierung ist 1 zu 1.
  1363.          06h Status feststellen oder einstellen Skalierungsfaktor
  1364.              gibt den aktuellen Zustand von der Maus oder ein anderes pointing
  1365.              device zurück, oder setzt den Skalierungsfaktor.
  1366.              BH     00h Rückgabe Gerätestatus
  1367.                     Rückgabe BL Statusbyte
  1368.                       Bits    0 gesetzt falls rechter Knopf gedrückt ist
  1369.                               1 reserviert
  1370.                               2 gesetzt falls linker Knopf gedrückt ist
  1371.                               3 reserviert
  1372.                               4 0 1:1 Skalieren
  1373.                                 1 2:1 Skalieren
  1374.                               5 0 Gerät ist ausgeschaltet
  1375.                                 1 Gerät ist eingeschaltet
  1376.                               6 0 Stream Modus
  1377.                                 1 Remote Modus
  1378.                               7 reserviert
  1379.                               CL Auflösung
  1380.                                  00h 1 Schritt pro Millimeter
  1381.                                  01h 2 Schritte pro Millimeter
  1382.                                  02h 4 Schritte pro Millimeter
  1383.                                  03h 8 Schritte pro Millimeter
  1384.                               DL Abtastrate (in Hex)
  1385.                                  0Ah 10 Meldungen pro Sekunde
  1386.                                  14h 20 Meldungen pro Sekunde
  1387.                                  28h 40 Meldungen pro Sekunde
  1388.                                  3Ch 60 Meldungen pro Sekunde
  1389.                                  50h 80 Meldungen pro Sekunde
  1390.                                  64h 100 Meldungen pro Sekunde
  1391.                                 0C8h 200 Meldungen pro Sekunde
  1392.                     01h einstellen Skalierung 1:1
  1393.                     02h einstellen Skalierung 2:1
  1394.          07h einstellen Adresse pointing device handler
  1395.              meldet dem BIOS pointing device Treiber die Adresse einer Routine
  1396.              die aufgerufen wird sobald Daten an dem pointing device verfügbar
  1397.              sind.
  1398.              ES:BX Adresse vom Geräte Handler des Benutzers
  1399.              Rückgabe AL 00h
  1400. Rückgabe CF gesetzt wenn Fehler
  1401.          AH Status
  1402.             00h erfolgreich
  1403.             01h ungültige Funktion
  1404.             02h ungültige Eingabe
  1405.             03h Schnittstellenfehler
  1406.             04h gebraucht zur Rücksendung
  1407.             05h kein Geräte Handler installiert
  1408. Anmerkung 1) die Werte in BH für diese Funktionen die als Eingabe dienen, werden
  1409.              in unterschiedlich Adressen für jede Unterfunktion gespeichert.
  1410.           2) der Benutzer Handler für pointing device Daten wird via ein FAR Call
  1411.              aufgerufen, mit vier Parameter auf dem Stapel:
  1412.              SS:SP+0Ah Zustand
  1413.              SS:SP+08h x Koordinaten
  1414.              SS:SP+06h y Koordinaten
  1415.              SS:SP+04h z Koordinaten (immer 0)
  1416.              der Handler muß via ein FAR Return beendet wrede, ohne das die
  1417.              Parameter vom Stapel entfernt werden.
  1418.           3) das Parameterstatus Wort das an den Handler zurückgegeben wird,
  1419.              ist interpretiert wie folgt:
  1420.              Bits    0     linker Knopf gedrückt
  1421.                      1     rechter Knopf gedrückt
  1422.                      2-3   reserviert
  1423.                      4     Vorzeichen vom x Wert ist negativ
  1424.                      5     Vorzeichen vom y Wert ist negativ
  1425.                      6     Überlauf beim x Wert
  1426.                      7     Überlauf beim y Wert
  1427.                      8-0Fh reserviert
  1428.  
  1429.  
  1430. Funktion 0C3h aktivieren/deaktivieren Watchdog Zeitüberschreitung (PS/2 50+)
  1431. Aufruf   AH 0C3h
  1432.          AL 00h deaktivieren Watchdog
  1433.             01h aktivieren Watchdog
  1434.          BX Zeitzähler
  1435. Rückgabe CF gesetzt wenn Fehler
  1436. Anmerkung 1) der Watchdog Zeit-Zähler erzeugt ein NMI.
  1437.           2) dies ist zum Schutz mit einem echten OS , damit dies nicht ahhängig
  1438.              ist und temporäre Meister nicht fähig sind den Bus für immer zu belegen.
  1439.  
  1440.  
  1441. Funktion 0C4h programmierbare Optionsauswahl (PS/2 50+)
  1442. Aufruf   AH 0C4h
  1443.          AL 00h Rückgabe Basisadresse POS Register
  1444.             01h aktivieren Steckplatz
  1445.                 BL Steckplatz Nummer
  1446.             02h aktivieren Adapter
  1447. Rückgabe CF gesetzt wenn Fehler
  1448.          DX Basisadresse POS Register (falls Funktion 00h)
  1449. Anmerkung 1) Fn 00h gibt die Basisadresse des programmierbaren Optionsauswahl Registers zurück,
  1450.              aktiviert ein Steckplatz zur Einstellung, oder aktiviert einen Adapter.
  1451.           2) ausschließlich zulässig auf Maschinen mit Mikro Kanal Architektur (MCA) Bus.
  1452.           3) nachdem ein Steckplatz mit fn 01h aktiviert wurde, wesentlich Information
  1453.              für den Adapter können erhalten werden, indem eine Eingabetransaktion
  1454.              für den Port durchgeführt wird.
  1455.              Port      Funktion
  1456.              100h      MCA ID (niederwertiges Byte)
  1457.              101h      MCA ID (höherwertiges Byte)
  1458.              102h      Optionsauswahl Byte 1
  1459.                  Bit 0 0 falls deaktiviert
  1460.                        1 falls aktiviert
  1461.              103h      Optionsauswahl Byte 2
  1462.              104h      Optionsauswahl Byte 3
  1463.              105h      Optionsauswahl Byte 4
  1464.                        Bits 6-7 sind Kanal Kontrollanzeiger
  1465.              106h      Unteradresse Erweiterung (niedwertiges Byte)
  1466.              107h      Unteradresse Erweiterung (höherwertiges Byte)
  1467.  
  1468.  
  1469. Funktion 0C5h benutzt von PS/2 Modell 50+ und Olivetti MCA Maschinen 
  1470.               benutzt von Desqview 2.2
  1471.               benutzt von Lotus 123 Freigabe 2.2
  1472.               benutzt von Microsoft Wort 5.0
  1473. Anmerkung Funktionen unbekannt. Berichtet von InfoWorld November 13 1989's Mikro Kanal
  1474.           386 Test als ein Konflikt zwischen den vorstehenden Softwarepacketen. InfoWorld
  1475.           sagte daß Quarterdeck (Desqview) an einer Behebung für ihr Produkt arbeitet.
  1476.           Produkt. Keine anderen Information.
  1477.  
  1478.  
  1479. Funktion 0DEh DesQview Services                                      (DesQview)
  1480.  
  1481.  
  1482.  ┌─────────────────────────────────────────────────────────────────────────────┐
  1483.  │ Interrupt 16h Tastatur I/O                                             3**9 │
  1484.  └─────────────────────────────────────────────────────────────────────────────┘
  1485.  (0:0058h) Zugriff auf die Tastatur. Scancodes siehe Anhang 1. ASCII Codes siehe
  1486.            Anhang 2.
  1487.  
  1488.            IBM's originale Tastatur Anordnung ist bezeichnet als eine 84-Tasten
  1489.            oder "old style" Tastatur. Es hat die Funktionstasten auf der linken
  1490.            und ein verankertes ein Cursor/numerisches Tastenfeld auf der rechten Seite.
  1491.            Bei der 101-Tasten "new style" oder "enhanced" Tastatur (wie auf den PS/2s benutzt)
  1492.            sind verschiedene Tasten hinzugekommen. Das frühere BIOS kann die neuen Scancodes
  1493.            nicht feststellen und das neue BIOS hat hierfür vernünftigerweise neue Funktionsaufrufe.
  1494.            anstatt die alten zu erweitern. Dieses verursacht einige Belästigungen
  1495.            beim schreiben von Programme welche beide Tastaturen voll unterstützen
  1496.            müssen. Die meisten Programme begrenzen daher ihre Funktionen auf
  1497.            die 84-Tasten Tastatur im Interesse der Rückwärtkompatibilität.
  1498.  
  1499.            Der SWITCHES Befehl in der CONFIG.SYS zwingt DOS 4.0 dazu, den Standard
  1500.            int 16h Aufruf für die Tastatur I/O anstatt den erweiterten int 16h
  1501.            Aufruf zu benutzen.
  1502.  
  1503.  
  1504. Funktion 00h holen Tastatureingabe - lesen des nächsten Zeichens in den Tastaturpuffer,
  1505.              wenn kein Taste bereit, warten bis eine Taste eingegeben wird.
  1506. Aufruf   AH 00h
  1507. Rückgabe AH Auswahlcode
  1508.          AL ASCII Zeichen
  1509. Anmerkung 1) entfernt Tastenanschlag von Puffer (löschen nach dem lesen).
  1510.           2) tut nicht arbeiten mit der besonders Tasten auf der 101-key " steigerte " Tastatur.
  1511.  
  1512.  
  1513. Funktion 01h kontrollieren Tastaturpuffer - nicht löschen
  1514. Aufruf   AH 01h
  1515. Rückgabe ZF 0 (gelöscht) falls Zeichen im Puffer vorhanden
  1516.             1 (gesetzt) wenn kein Zeichen im Puffer vorhanden
  1517.          AH Auswahlcode des Zeichens (falls ZF= 0)
  1518.          AL ASCII Zeichen falls benutzbar
  1519. Anmerkung 1) Tastenanschlag wird nicht vom Puffer entfernt. Dasselbe Zeichen und Auswahlcode
  1520.              wird beim nächsten Aufruf von Int 16h/fn 00h zurückgegeben.
  1521.           2) dies Aufrufen entfernt die 101-key codes von dem Puffer falls ihnen ein
  1522.              ein 84-key Code vorausgeht.
  1523.  
  1524.  
  1525. Funktion 02h Umschaltzustand - feststellen Bit Kennzeichen deuten auf den Umschaltzustand hin
  1526. Aufruf   AH 02h
  1527. Rückgabe AL Zustandsbyte (dasselbe wie [0040:0017])
  1528.            Bits 7 Einfügen an
  1529.                 6 CapsLock an
  1530.                 5 NumLock an
  1531.                 4 ScrollLock an
  1532.                 3 Alt Taste gedrückt
  1533.                 2 CTRL (STRG) Taste gedrückt
  1534.                 1 links Umschalttaste gedrückt
  1535.                 0 rechte Umschalttaste gedrückt
  1536. Anmerkung das Tastatur Kennzeichenbyte ist gespeichert im BIOS Datenbereich an 0000:0417h.
  1537.  
  1538.   
  1539. Funktion 03h Tastatur - einstellen Wiederholungsfaktor (PCjr, AT, XT/286, PS/2)
  1540. Aufruf AH 03h
  1541.        AL 00h zurücksetzen typematic standard (PCjr)
  1542.           01h erhöhen anfängliche Verzögerung (PCjr)
  1543.           02h vermindern Wiederholungsrate um 1/2 (PCjr)
  1544.           03h erhöhen beide Verzögerungen um 1/2( PCjr)
  1545.           04h ausschalten typematic( PCjr)
  1546.           05h einstellen Wiederholungsfaktor (AT, PS/2)
  1547.        BH 00h-03h für Verzögerungen von 250ms, 500ms, 750ms, oder 1 Sekunde
  1548.                   0, 0 250ms
  1549.                   0, 1 500ms
  1550.                   1, 0 750ms
  1551.                   1, 1 1 Sekunde
  1552.        BL 00h-1Fh für Wiederholungsraten von 30cps abwärts zu 2cps
  1553.                   00000      30      01011    10.9        10101 4.5
  1554.                   00001      26.7    01100    10          10110 4.3
  1555.                   00010      24      01101     9.2        10111 4
  1556.                   00011      21.8    01110     8.6        11000 3.7
  1557.                   00100      20      01111     8          11001 3.3
  1558.                   00101      18.5    10000     7.5        11010 3
  1559.                   00110      17.1    10001     6.7        11011 2.7
  1560.                   00111      16      10010     6          11100 2.5
  1561.                   01000      15      10011     5.5        11101 2.3
  1562.                   01001      13.3    10011     5.5        11110 2.1
  1563.                   01010      12      10100     5          11111 2
  1564. Rückgabe keine
  1565. Anmerkung 1) Unterfunktion 05h ist verfügbar auf ATs mit dem ROM BIOS Datum 11/15/85 und
  1566.              später, dem XT/286, und dem PS/2.
  1567.           2) Unterfunktion 0 (Standard Tastaturfestlegung) schaltet die Tastatur in den
  1568.              Originalzustand zurück. Der Originalzustand beim einschalten ist Typematic an,
  1569.              normale anfängliche Verzögerung und normalem Wiederholungsfaktor.
  1570.           3) Unterfunktion 1 (erhöhen anfängliche Verzögerung) erhöht die Verzögerung zwischen dem
  1571.              ersten eingebenen Zeichen und den eingegebenen Wiederholungszeichen.
  1572.           4) Unterfunktionen 0 bis 4, immer wenn der Wiederholungsfaktor geändert wird,
  1573.              alle vorhergehend Einstellungen sind entfernt.
  1574.  
  1575.  
  1576. Funktion 04h Tastaturklick umschalten (PCjr und Convertible)
  1577. Aufruf   AH 04h
  1578.          AL 00h Tataturklick aus
  1579.             01h Tataturklick an
  1580. Rückgabe keine
  1581.          
  1582.  
  1583. Funktion 05h Zeichen in Tastaturpuffer einfügen (AT oder PS/2 mit enhanced kbd)
  1584. Aufruf   AH 05h
  1585.          CH Auswahlcode
  1586.          CL ASCII Zeichen
  1587. Rückgabe CF gesetzt wenn Fehler
  1588.          AL 00h erfolgreich
  1589.             01h falls Puffer voll
  1590. Anmerkung Plaziert ein Zeichen und den Auswahlcode an das Ende vom Tastaturpuffer.
  1591.  
  1592.  
  1593. Funktion 06h Zeichen in Tastaturpuffer schreiben (Fansi-Console bis 2.00)
  1594. Aufruf   AH 06h
  1595.          BX erweiterter Tastenwert der in den Tastaturpuffer plaziert werden soll.
  1596. Rückgabe Unbekannt
  1597. Anmerkung Dieser Aufruf kann ignoriert werden, seit er durch die Funktion 05h ersetzt wird.
  1598.  
  1599.  
  1600. Funktion 07h Ändern Umschaltzustand (Fansi-Console bis 2. 00)
  1601. Aufruf   AH 07h
  1602.          AL Wert Umschaltzustand
  1603. Rückgabe Unbekannte
  1604. Anmerkung Zustandsbyte ist dasselbe wie in Funktion 02h.
  1605.  
  1606.  
  1607. Funktion 10h holen erweiterte Tastatureingabe und lesen (F11, F12 erweiterte Tastatur)
  1608.              (XT/286, PS/2, AT mit "enhanced" Tastatur)
  1609. Aufruf   AH 10h
  1610. Rückgabe AH Auswahlcode
  1611.          AL ASCII Zeichen falls verfügbar
  1612. Anmerkung 1) liest ein Zeichen und den Auswahlcode vom Tastaturpuffer.
  1613.           2) diese Funktion sollte für die erweiterten Tastaturen an Stelle von Int 16h fn 00h benutzt werden.
  1614.              Es erlaubt den Anwendungen die zusätzlichen Tasten F11, F12, und die zusätzlichen
  1615.              Cursortasten abzufragen.
  1616.           3) dies ist eine erweiterte Version von Funktion 00h.
  1617.  
  1618.  
  1619. Funktion 11h Kontrollieren erweiterten Tastenanschlag (F11-F12 erweiterte Tastatur)
  1620.              ( XT/286, PS/2, AT mit "enhanced" Tastatur)
  1621. Aufruf   AH 11h
  1622. Rückgabe ZF 0 (gelöscht) falls Taste gedrückt
  1623.               AH Auswahlcode
  1624.               AL ASCII Zeichen falls erfügbar
  1625.             1 falls Puffer leer ist
  1626. Anmerkung 1) der Tastenanschlag wird nicht vom Puffer entfernt. Dasselbe Zeichen und der Auswahlcode
  1627.              wird beim nächsten Aufrufe von Int 16h/fn 10h zurückgegeben.
  1628.           2) diese Funktion sollte für die erweiterten Tastaturen an Stelle von Int 16h fn 00h benutzt werden.
  1629.              Es erlaubt den Anwendungen die zusätzlichen Tasten F11, F12, und die zusätzlichen
  1630.              Cursortasten abzufragen.
  1631.  
  1632.  
  1633. Funktion 12h erweiterten Umschaltzustand feststellen (F11, F12 erweiterte Tastatur)
  1634. Aufruf   AH 12h
  1635. Rückgabe AX Zustandswort
  1636.             AL     Bit  0 rechte Umschalttaste gedrückt
  1637.                         1 linke Umschalttaste gedrückt 
  1638.                         2 CTRL (STRG) Taste gedrückt 
  1639.                         3 Alt Taste gedrückt 
  1640.                         4 ScrollLock eingeschaltet
  1641.                         5 NumLock eingeschaltet
  1642.                         6 CapsLock eingeschaltet
  1643.                         7 Einfügen ist eingeschaltet
  1644.             AH     Bit  0 linke Control Taste gedrückt
  1645.                         1 linke ALT Taste gedrückt 
  1646.                         2 rechte Control Taste gedrückt 
  1647.                         3 rechte ALT Taste gedrückt 
  1648.                         4 Scroll Lock Taste gedrückt 
  1649.                         5 NumLock Taste gedrückt 
  1650.                         6 CapsLock Taste gedrückt 
  1651.                         7 SysReq Taste gedrückt 
  1652. Anmerkung diese Funktion sollte für die erweiterten Tastaturen an Stelle von Int 16h fn 02h benutzt werden.
  1653.  
  1654.  
  1655.  
  1656. Funktion  4Fh   prüfen ob installiert                (Gerkey)
  1657. Aufruf    AH    4Fh
  1658.           AL    56h     Funktion
  1659.           BX    00h     prüfen ob installiert
  1660. Rückgabe  AX    0FFFFh speicherresistent und aktiv
  1661.                 alle anderen Werte - nicht speicherresistent
  1662.           BX    Versionsnummer
  1663.                 BH   übergeordnete Versionsnummer
  1664.                 BL   untergeordnete Versionsnummer
  1665.  
  1666.  
  1667.  
  1668. Funktion  4Fh   Komma/Punkt Umschaltung                (Gerkey)
  1669. Aufruf    AH    4Fh
  1670.           AL    56h     Funktion
  1671.           BX    01h     Komma/Punkt umschalten
  1672. Rückgabe  AX    0FFFFh speicherresistent und aktiv
  1673.                 alle anderen Werte - nicht speicherresistent
  1674. Anmerkung Dieser Aufruf ändert die Bedeutung der Punkt/Komma Taste vom numerischen
  1675.           Eingabeblock. Jenachdem wie die aktuelle Belegung der Taste ist, ändert
  1676.           sich diese (z.B. wenn Punkt aktiv ist, wird auf Komma umgeschaltet).
  1677.  
  1678. Funktion 75h einstellen Anzahl Takteinheiten für Abtastung (Scanning) (pcAnywhere 2.00)
  1679. Aufruf   AH 75h
  1680.          AL Anzahl Takteinheiten
  1681. Rückgabe keine
  1682. Anmerkung 1) setzt Anzahl von 55ms Zeit-Zähler Takteinheiten um Bildschirmänderungen zu überprüfen.
  1683.           2) pcAnywhere ist ein Programm das es erlaubt über eine serielle Verbindung
  1684.              an einer anderen Maschine zu arbeiten.
  1685.  
  1686.  
  1687. Funktion 76h Modus zur Fehlerkontrolle einstellen (pcAnywhere 2.00)
  1688. Aufruf   AH 76h
  1689.          AL Art der Fehlerkontrolle
  1690.             00h keine
  1691.             01h schnell
  1692.             02h langsam
  1693. Rückgabe keine
  1694.  
  1695.  
  1696. Funktion 77h reserviert (pcAnywhere 2.00)
  1697. pcAnywhere API - reserviert 
  1698.  
  1699.  
  1700. Funktion 78h aufzeichnen aus (pcAnywhere 2.00)
  1701. Aufruf   AL 00h auf einen anderen Aufruf warten
  1702.             01h beenden aber als TSR belassen
  1703.             02h automatischer Modus - überwachen DTR
  1704.             0FFh im aktuell Bedienungsmodus belassen (pcAnywhere 2.1)
  1705. Rückgabe keine
  1706.  
  1707.  
  1708. Funktion 79h prüfen ob installiert (pcAnywhere 2.00)
  1709. Aufruf   AH 79h
  1710.          AL 00h prüfen ob installiert
  1711. Rückgabe AX 0FFFFh speicherresistent und aktiv
  1712.             0FFFEh speicherresistent aber nicht aktiv
  1713.             0FFFDh speicherresistent TSR
  1714.             0FFFCh automatischer Modus
  1715.             alle anderen Werte - nicht speicherresistent
  1716.  
  1717.  
  1718. Funktion 7Ah abbrechen pcAnywhere Sitzung (pcAnywhere 2.00)
  1719. Aufruf   AH 7Ah
  1720. Rückgabe keine
  1721. Anmerkung beläßt pcAnywhere speicherresistent, ist aber unfähig einen Aufruf zu beantworten.
  1722.  
  1723.  
  1724. Funktion 7Bh aktivieren/deaktivieren Operationen (pcAnywhere 2.00)
  1725. Aufruf   AH 7Bh
  1726.          AL Status
  1727.             00h deaktiviert
  1728.             01h aktiviert
  1729. Rückgabe keine
  1730. Anmerkung der entfernte Bildschirm ist automatisch aufgefrischt sobald die Sitzung eingeschaltet wird.
  1731.  
  1732.  
  1733. Funktion 7Ch holen Port Ausstattung (pcAnywhere 2.00)
  1734. Aufruf   AH 7Ch
  1735. Rückgabe AH Portnummer in binär (0-15)
  1736.          AL Baud-Rate
  1737.             00h 50
  1738.             01h 75
  1739.             02h 110
  1740.             03h 134.5
  1741.             04h 150
  1742.             05h 300
  1743.             06h 600
  1744.             07h 1200
  1745.             08h 1800
  1746.             09h 2000
  1747.             0Ah 2400
  1748.             0Bh 4800
  1749.             0Ch 7200
  1750.             0Dh 9600
  1751.             0Fh 19200
  1752.  
  1753.  
  1754. Funktion 7Dh holen/einstellen Terminal Parameter (pcAnywhere 2.00)
  1755. Aufruf   AH 7Dh
  1756.          AL 00h einstellen Parameter
  1757.             01h holen Parameter
  1758.             02h holen Ausstattungskopf und Terminal Parameter
  1759.          CX:DS Adresse vom Terminal Parameterblock
  1760. Rückgabe AL 00h nichts
  1761.             01h aktueller Terminal Parameterblock in CX:DS
  1762.             02h Ausstattungskopf und Terminal Parameterblock in CX:DS
  1763. Anmerkung Terminal Parameterblock Format: (1152 Bytes) (dezimal)
  1764.           384 Bytes CRT Steuerungsinformation
  1765.               Bytes Funktion
  1766.               1-8   Cursor aufwärts
  1767.               9-16  Cursor abwärts
  1768.               17-24 Cursor links 
  1769.               25-32 Cursor rechts 
  1770.               33-40 Cursor Pos1
  1771.               41-48 löschen Bildschirm 
  1772.               49-56 löschen bis zum Ende der Zeile
  1773.               57-64 löschen bis zum Ende der Seite
  1774.               65-72 einfügen Zeile 
  1775.               73-80 löschen Zeile 
  1776.               81-88 einfügen Zeichen 
  1777.               89-96 löschen Zeichen 
  1778.              97-104 Cursorposition Zuführung
  1779.             105-112 zwischen Zeile und Spalte 
  1780.             113-120 nach Cursorposition 
  1781.             121-128 CRT Initialisierung 
  1782.         256 Bytes Zeichen Übersetzungstabelle
  1783.             übersetzt ASCII Zeichen von Host. Normalerweise werden die IBM
  1784.             Grafikzeichen in andere anzeigbare Symbole übersetzt.
  1785.         512 Bytes Tastatur Folgen 
  1786.             641-644 Cursor aufwärts 
  1787.             645-648 Cursor abwärts 
  1788.             649-652 Cursor links 
  1789.             653-656 Cursor rechts 
  1790.             657-660 Pos1
  1791.             661-664 Ende 
  1792.             665-668 PgUp 
  1793.             669-672 PgDn 
  1794.             673-676 Einfügen
  1795.             677-680 Löschen
  1796.             681-684 Control-Pos1
  1797.             685-688 Control-End
  1798.             689-692 Control-PgUp
  1799.             693-696 Control-PgDn
  1800.             697-700 Escape
  1801.             701-740 F1 ... F10 
  1802.             741-780 S_F1 ... S_F10
  1803.             781-820 CTRL_F1 ... CTRL_F10
  1804.             821-860 ALT_F1 ... ALT_F10
  1805.             861-964 Alt A-Z
  1806.            965-1004 Alt 0-9
  1807.           1005-1008 Alt=
  1808.           1009-1012 Alt -
  1809.           1013-1016 Drucken Bildschirm
  1810.           1017-1020 Ctrl-Cursor links
  1811.           1021-1024 Ctrl-Cursor rechts
  1812.           1025-1120 reserviert 
  1813.           1121-1124 beginnen conv. Modus 
  1814.           1125-1128 entfernt drucken aus
  1815.           1129-1132 entfernt drucken an
  1816.           1133-1136 Backspace
  1817.           1137-1140 auffrischen Bildschirm 
  1818.           1141-1144 sende nächsten Code
  1819.           1145-1148 Anzeige oberen 24 Zeilen
  1820.           1149-1152 Anzeige untenen 24 Zeilen
  1821.  
  1822.  
  1823. Funktion 7Eh serielle I/O zum pcAnywhere Port (pcAnywhere 2. 00)
  1824. Aufruf   AH 7Eh
  1825.          AL I/O Funktion
  1826.             01h holen Port Eingabestatus
  1827.             02h holen Port Eingabezeichen
  1828.             03h Zeichenausgabe
  1829.             04h Telefon auflegen
  1830.          CX ASCII Zeichen zur Ausgabe (fn 03h)
  1831. Rückgabe (falls AL= 01h)
  1832.          AX 00h kein Zeichen bereit
  1833.             01h Zeichen ist verfügbar
  1834.          (falls AL= 02h)
  1835.          AL ASCII Code vom empfangenen Zeichen
  1836.  
  1837.  
  1838. Funktion 7Fh einstellen Tastatur/Bildschirm Modus (pcAnywhere 2.00)
  1839. Aufruf   AH 7Fh
  1840.          AL Parameter
  1841.             00h aktivieren Remote Tastatur ausschließlich |
  1842.             01h aktivieren Host Tastatur ausschließlich   | Tastaturgruppe
  1843.             02h aktivieren beide keyboards                |
  1844.  
  1845.             08h Anzeige oberen 24 Zeilen                  | Bildschirmgruppe
  1846.             09h Anzeige unteren 24 Zeilen                 |
  1847.  
  1848.             10h Hayes Modem                               |
  1849.             11h anderes modem                             | Modemgruppe
  1850.             12h direkt angeschlossen                      |
  1851.  
  1852.  
  1853. Funktion 0EDh Borland Turbo Lightning API (teilweise)
  1854. Aufruf   AH 0EDh
  1855.          BH 0EDh
  1856.          BL Funktion
  1857.             00h prüfen ob installiert
  1858.             02h Zeiger zum Lightning internen Datenaufbau lobyte
  1859.             03h Zeiger zum Lightning internen Datenaufbau hibyte
  1860.             04h laden Hilfswörterbuch
  1861.             06h autoproof Modus
  1862.             0Fh holen Anzahl Ersetzungen (Segment)
  1863.           DS:DI Zeiger zur verarbeitenden Zeichenkette
  1864. Rückgabe  AX Fehlercode (Unbekannt)
  1865. Anmerkung Ich habe verschiedene Versuche unternommen, um eine Kopie von dem Turbo Lightning API zu bekommen,
  1866.           welches 1985 vermutlich für Entwickler verfügbar war.
  1867.           1988 schrieb Borland das sie daran arbeiten.
  1868.           Ende 1989 gab Borland über BIX bekannt, das keine weiteren Versionen
  1869.           des APIs mehr erstellt werden. Die Information hier sind aus
  1870.           Chris Dunford's LSPELL.PAS Schnittstelle zu Lightning entnommen.
  1871.  
  1872.  
  1873. Funktion 0F0h einstellen CPU Geschwindigkeit (Compaq 386)
  1874. Aufruf   AH 0F0h einstellen Geschwindigkeit
  1875.          AL Geschwindigkeit
  1876.             00h gleichwertig zu 6 mHz 80286 (allgemein)
  1877.             01h gleichwertig zu 8 mHz 80286 (schnell)
  1878.             02h volle 16 mHz (hohe)
  1879.             03h umschalten zwischen 8 mHz-gleichwertig und der Geschwindigkeitseinstellung
  1880.                 auf dem Systemboard (auto oder hohe)
  1881.             04h-07h Unbekannt
  1882.             08h voll 16 mHz außer 8 mHz-gleichwertig während der Diskettenzugriffe
  1883.             09h Geschwindigkeit direkt wählen
  1884.                 CX Geschwindigkeitswert, 1 (langsamste) bis 50 (voll), 3 ~= 8088
  1885. Rückgabe keine?
  1886. Anmerkung 1) benutzt vom Compaq DOS MODE Befehl.
  1887.  
  1888.  
  1889. Funktion 0F1h lesen aktuelle CPU Geschwindigkeit (Compaq 386)
  1890. Aufruf   AH 0F1h
  1891. Rückgabe AL Geschwindigkeitscode (siehe Funktion 0F0h)
  1892.             falls AL= 09h, CX= Geschwindigkeitscode
  1893.  
  1894.  
  1895. Funktion 0F2h feststellen des angeschlossenen Tastaturtyps (Compaq 386)
  1896. Aufruf   AH 0F2h
  1897. Rückgabe AL Type
  1898.             00h falls 11-bit AT Tastatur benutzt wird
  1899.             01h falls 9-bit PC Tastatur benutzt wird
  1900.                                        
  1901.  
  1902. Funktion 0FFh PC-Tools API 
  1903. Aufruf   AH 0FFh
  1904. andere Parameter unbekannt
  1905. Anmerkung PC-Tools ist ein Swiss-army-knife Softwarepaket mit einem Editor, DOS
  1906.           Befehlsinterpreter, Cache, Festplattenoptimierer, und verschiedene andere
  1907.           Funktionen von Central Point Software.
  1908.  
  1909.  
  1910. Funktion 0FFh 2-The-Max VGA-16 Karte 
  1911. Aufruf   AH 0FFh feststellen Zoomen Interrupt
  1912. Rückgabe AL Zoomen Interruptnummer
  1913.          AL+1 alter BIOS Tastatur Handler Interruptnummer
  1914.          BX Hot Key
  1915.  
  1916.  
  1917.  
  1918.  ┌─────────────────────────────────────────────────────────────────────────────┐
  1919.  │ Interrupt 17h Drucker                                                 3**10 │
  1920.  └─────────────────────────────────────────────────────────────────────────────┘
  1921.  (0:005Ch) Zugriff auf die parallelen Drucker
  1922.            AH wird geändert. Alle andere Register bleiben erhalten.
  1923.  
  1924.  
  1925. Funktion 00h drucken Zeichen/senden AL zum Drucker DX (0, 1, oder 2)
  1926. Aufruf   AH 00h
  1927.          AL ASCII Zeichen Code
  1928.          DX benuzter Drucker
  1929.             00h PRN oder LPT1
  1930.             01h LPT2
  1931.             02h LPT3
  1932. Rückgabe AH Zustandsbyte
  1933.             Bits 0 Zeitüberschreitung
  1934.                  1 ungebraucht
  1935.                  2 ungebraucht
  1936.                  3 I/O Fehler
  1937.                  4 Drucker ausgewählt
  1938.                  5 kein Papier mehr
  1939.                  6 Empfangsbestätigung
  1940.                  7 nicht beschäftigt
  1941.  
  1942.  
  1943. Funktion 01h initialisieren Drucker - einstellen init Zeile niedrig, senden 0Ch zum Drucker in DX
  1944. Aufruf   AH 01h
  1945.          DX Druckeranschluß welcher initialisiert wird (0, 1, 2)
  1946. Rückgabe Zustand wie nachfolgend
  1947.  
  1948.  
  1949. Funktion 02h Druckerstatus - lesen Status von Drucker in DX nach AH
  1950. Aufruf AH 02h
  1951.        DX Druckeranschluß (0, 1, 2)
  1952. Rückgabe AH Zustandsbyte
  1953.             Bits   7   0 beschäftigt/Pause: der Drucker kann nicht unmittelbar
  1954.                          mehr Daten annehmen, weil er gerade ein Zeichen empfängt
  1955.                          eine Zeile druckt, Offline ist, oder ein Fehler aufge-
  1956.                          treten ist.
  1957.                        1 bereit
  1958.                    6   Empfangsbestätigung Zeile umgeschaltet: gibt den Status der ACK
  1959.                        Zeile auf dem Druckeranschluß zurück, in dem Moment in dem der Zustand gelesen wurde.
  1960.                        ACK ist ein abtasten: es geht niedrig für ein sehr kurze Zeit (12
  1961.                        Mikrosekunden auf einem Epson) sobald der Drucker bereit ist ein
  1962.                        anderes Zeichen zu empfangen. Soweit dies den Druckerzustand betrifft,
  1963.                        ist dies nutzlos; es ist ausschließlich nützlich für etwas wie eine
  1964.                        Interrupt-gesteuerte Schnittstelle. Die meiste Zeit, es wird ACK hoch
  1965.                        (Bit 6 an) angezeigt, aber gelegentlich, falls man den Zustand kontrolliert
  1966.                        nachdem ein Zeichen gesendet wurde, es wird niedrig angezeigt.
  1967.                        ACK ist niedrig sobald der Drucker ausgeschaltet ist.
  1968.                    5   out-of-paper Zeile umgeschaltet
  1969.                    4   Drucker ausgewählt: Drucker ist ausgewählt/bereit/online. Normalerweise
  1970.                        gibt es einen Schalter am Drucker der dies steuert.
  1971.                    3   I/O Fehler: offline, kein Papier mehr oder andere Fehlerbedingung
  1972.                        wie kein Farbband.
  1973.                    2   ungebraucht
  1974.                    1   ungebraucht
  1975.                    0   Zeitüberschreitung Fehler: Drucker scheiterte daran ein ACK
  1976.                        zu senden und falls beschäftigt nachdem ein Zeichen gesendet wurde.
  1977. Anmerkung 1) folgende Zustände können bei einem geeigneten funktionierenden Drucker festgestellt werden:
  1978.          normal                         Offline                        ausgeschaltet
  1979.          ======                         =======                        =============
  1980.          nicht beschäftigt/Pause        beschäftigt/Pause              beschäftigt/Pause
  1981.          Papier vorhanden               Papier vorhanden               Papier vorhanden
  1982.          ausgewählt/online              nicht ausgewählt/online        nicht ausgewählt/online
  1983.          kein I/O Fehler                I/O Fehler (gewöhnlicher)      I/O Fehler
  1984.          kein Zeitüberschreitungsfehler kein Zeitüberschreitungsfehler kein Zeitüberschreitungsfehler
  1985.           2) nicht alle Drucker geben geeignete Statuscodes zurück. Das ist OK, nicht alle
  1986.              nachgemachten BIOS führen eine von zweien aus. Falls das Programm in Abhängigkeit der
  1987.              richtigen Codes arbeitet, wird eine leichte Programmanpassung benötigt oder es
  1988.              muß für nichtstandardmäßige Hardware konfiguriert werden.
  1989.  
  1990.  
  1991.  
  1992. Funktion 4Fh aktivieren/deaktivieren Druckertreiber            (PRN7BIT)
  1993. Aufruf   AH 04Fh
  1994.          AL 056H
  1995.          DH 0
  1996.          DL Unterfunktion
  1997.             0 = deaktivieren PRN7BIT
  1998.             1 = aktivieren PRN7BIT
  1999. Rückgabe keine
  2000.  
  2001.  
  2002. Funktion 4Fh Druckeranschluß für Druckertreiber wählen         (PRN7BIT)
  2003. Aufruf   AH 04Fh
  2004.          AL 056H
  2005.          DH 1
  2006.          DL Druckeranschluß welcher benutzt werden soll (0, 1, 2)
  2007. Rückgabe keine
  2008.  
  2009.  
  2010.  
  2011.  
  2012.  ┌─────────────────────────────────────────────────────────────────────────────┐
  2013.  │ Interrupt 18h ROM BASIC                                               3**11 │
  2014.  └─────────────────────────────────────────────────────────────────────────────┘
  2015.  (0:0060h) Ausführen ROM BASIC an Adresse 0F600h:0000h
  2016. Aufruf keine Parameter benutzt
  2017. Rückgabe springt ins ROM BASIC auf IBM Systemen
  2018. Anmerkung 1) oft startet dies einen kompatiblen Computer.
  2019.           2) benutzt von Turbo C 1.5. 2.0 und später soltte nicht benutzt werden.
  2020.           3) auf IBM Systeme, dieser Interrupt wird aufgerufen falls bei Start Festplattenfehler auftreten.
  2021.           4) Video Interrupt beim DEC Rainbow.
  2022.           5) Digital Research's ROM Ausführung von DR-DOS benutzt int 18h als
  2023.              den anfänglichen Einsprungstellenvektor in den Betriebssystemcode.
  2024.              Anmerkung daß einige nachgemachte BIOSes keine geeignete Realisierung
  2025.              des int 18h in dem ROM vornehmen, sodaß die DR-DOS ROMs nicht immer
  2026.              benutzt werden können.
  2027.  
  2028.       
  2029.  
  2030.  ┌─────────────────────────────────────────────────────────────────────────────┐
  2031.  │ Interrupt 19h Starten des Systems / Erweiterungsspeicher VDISK ID     3**12 │
  2032.  └─────────────────────────────────────────────────────────────────────────────┘
  2033.  (0:0064h)
  2034. Aufruf keine Parameter benutzt
  2035. Rückgabe keine
  2036. Anmerkung 1) liest Spur 0, Sektor 1 in Adresse 0000h:7C00h, übergibt dann die Steuerung
  2037.              an die Adresse. Wenn kein Diskettenlaufwerk verfügbar ist, schaut an der
  2038.              absoluten Adresse C:800 ob eine zulässige Festplatte oder anderes ROM vorhanden ist.
  2039.              Falls nicht, Aufruf des ROM-BASIC via int 18h oder anzeigen Fehlermeldung.
  2040.           2) veranlässt Neustart von Festplattensystem falls in Betrieb. (Es wird kein
  2041.              Speichertest ausgeführt).
  2042.           3) falls die Adresse 0000:0472h nicht den Wert 1234h enthält, ein Speichertest
  2043.              (POST) wird ausgeführt bevor der Startsektor gelesen wird.
  2044.           4) VDISK von DOS 3.0+ biegt diesen Vektor um, damit festgestellt werden kann
  2045.              wenn die CPU vom geschützten Modus in den echtesn Modus umgeschaltet wird.
  2046.              Ein ausführlich Diskussion von Ray Duncan hierüber kann im PC Magazine,
  2047.              Mai 30, 1989 nachgelesen werden.
  2048.           5) wie verlautet, einige Versionen von DOS 2.x und alle Versionen von DOS 3.x+
  2049.              den int 19h um einige Interrupt Vektoren die von DOS benutzt werden
  2050.              wieder in den Originalzustand für den Neustart zu versetzen
  2051.              weil der POST durch den int 19h nicht ausführt wird. Diese Vektoren
  2052.              so wird berichtet sind: 02h, 08h, 09h, 0Ah, 0Bh, 0Ch, 0Dh, 0Eh, 70h, 72h,
  2053.              73h, 74h, 75h, 76h, und 77h. Nachdem diese zurückergesetzt wurden, wird auch
  2054.              der original int 19h Vektor zurückgesetzt und der int 19h aufgerufen.
  2055.           6) das System überprüft ob ROMs installiert sind, indem der Speicher von 0C000h bis
  2056.              zum Anfang von des BIOS in 2k Schritte durchsucht wird. ROM Speicher ist identifiziert
  2057.              falls es mit dem Wort 0AA55h startet. Dem folgt ein 1 Byte großes Feld mit der Länge von
  2058.              dem ROM (dividiert durch 512). Falls ein ROM gefunden wird, das BIOS ruft das ROM
  2059.              an einem Offset von 3 vom Anfang auf. Dies Eigenschaft wurde nicht unterstützt in
  2060.              der ersten PC Maschinen. Die letzte Task übergibt die Steuerung wieder an das
  2061.              Urladerprogramm (vorausgesetzt die Disketten Steuereinheit ist betriebsbereit).
  2062.           7) 8255 Port 60h Bit 0= 1 falls von einer Diskette gestartet wird.
  2063.  
  2064.  
  2065.  
  2066.  ┌─────────────────────────────────────────────────────────────────────────────┐
  2067.  │ Interrupt 1Ah Datum und Zeit                                          3**13 │
  2068.  └─────────────────────────────────────────────────────────────────────────────┘
  2069.  (0:0068h) 1) Greift auf den PC internen Taktgeber zu.
  2070.            2) dieser Interrupt auf einige Maschinen nicht unterstützt, z.B.
  2071.               der HP150 PC.
  2072.            3) einige "Turbo" BIOSes führen den Taktgeber langsamer als normal aus
  2073.               um Benchmark Software zu täuschen, welche gewöhnlich den int 1Ah
  2074.               zur Zeitmessung benutzen.
  2075.            4) zählt das Auftreten der Rate von 1193180/65536 Aufrufe/Sek
  2076.               (18.2 mal pro Sekunde).
  2077.  
  2078. Funktion 00h Zeit-Zähler lesen (außer PC)
  2079. Aufruf   AH 00h
  2080. Rückgabe AL 00h falls der Taktgeber gelesen oder geschrieben (via AH= 0, 1)
  2081.                 wurde in der aktuellen 24-Stunden Zeit.
  2082.                 <> 0 Mitternacht ist vorbei seit dem letzten Lesen
  2083.          CX:DX 32-bit Takteinheitenzähler (höherwertige 16 Bits in CX)
  2084. Anmerkung 1) der zurückgegebene Wert ist die aufgelaufene Anzahl Takteinheiten seit
  2085.              Mitternacht. Da sind 18.2 Takteinheiten pro Sekunde, oder eine je 54.92ms.
  2086.              Sobald der Zähler 1,573,040 erreicht, wird er auf Null gesetzt, und das
  2087.              Überschreitungskennzeichen gesetzt.
  2088.           2) das Überschreitungskennzeichen wird durch diesen Funktionsaufruf gelöscht,
  2089.              sodaß ausschließlich einmal pro Tag nicht Null zurückgegeben wird.
  2090.           3) Int 1Ah/fn 01h kann benutzt werden, um den Zähler auf einen beliebigen
  2091.              32 Bit Wert einzustellen.
  2092.  
  2093.  
  2094. Funktion 01h Zeitzähler setzen (außer PC)
  2095. Aufruf   AH 01h
  2096.          CX:DX 32-bit höherwertiges Wort/niederwertiges Wort des Zeitzählers
  2097. Rückgabe keine
  2098. Anmerkung 1) die Takteinheiten werden durch den Zeitzähler Interrupt 18.2065 mal
  2099.              pro Sekunde oder alle 54.9254 Millisekunden erhöht. Deshalb:
  2100.                 Aufrufe pro Sekunde 18      (12h)
  2101.                 Aufrufe pro Minute  1092    (444h)
  2102.                 Aufrufe pro Stunde  65543   (10011h)
  2103.                 Aufrufe pro Tag     1573040 (1800B0h)
  2104.           2) der Zähler wird auf Null gesetzt sobald System neu gestartet wird.
  2105.           3) speichert einen 32-bit Wert im Takteinheitzähler.
  2106.           4) das Überschreitungskennzeichen wird durch diesen Aufruf gelöscht.
  2107.  
  2108.  
  2109. Funktion 02h lesen der Echtzeituhr (AT und nachfolgende)
  2110. Aufruf   AH 02h
  2111. Rückgabe CH Stunden in BCD
  2112.          CL Minuten in BCD
  2113.          DH Sekunden in BCD
  2114.          DL 00h Standard Uhrzeit
  2115.             01h Sommerzeit
  2116.          CF 0 falls Uhr in Ordnung
  2117.             1 falls die Uhr nicht läuft (Batterie leer, etc.)
  2118. Anmerkung liest die aktuell Uhrzeit vom CMOS Uhrzeit/Datum Chip.
  2119.  
  2120.  
  2121. Funktion 03h einstellen der Echtzeituhr (AT und nachfolgende)
  2122. Aufruf   AH 03h
  2123.          CH Stunden in BCD
  2124.          CL Minuten in BCD
  2125.          DH Sekunden in BCD
  2126.          DL 0 (gelöscht) falls Standard Uhrzeit
  2127.             1 (gesetzt) falls Sommerzeit
  2128. Rückgabe keine
  2129. Anmerkung setzt die Uhrzeit im CMOS Uhrzeit/Datum Chip.
  2130.  
  2131.  
  2132. Funktion 04h lesen des Datums aus der Echtzeituhr (AT und nachfolgende)
  2133. Aufruf   AH 04h
  2134. Rückgabe CH Jahrhundert in BCD (19 oder 20)
  2135.          CL Jahr in BCD
  2136.          DH Monat in BCD
  2137.          DL Tag in BCD
  2138.          CF 0 falls Uhr in Ordnung
  2139.             1 falls die Uhr nicht läuft (Batterie leer, etc.)
  2140. Anmerkung liest das aktuelle Datum vom CMOS Uhrzeit/Datum Chip.
  2141.  
  2142.  
  2143. Funktion 05h setzen des Datum der Echtzeituhr (AT und nachfolgende)
  2144. Aufruf   AH 05h
  2145.          CH Jahrhundert in BCD (19 oder 20)
  2146.          CL Jahr in BCD
  2147.          DH Monat in BCD
  2148.          DL Tag in BCD
  2149. Rückgabe keine
  2150. Anmerkung setzt das Datum im CMOS Uhrzeit/Datum Chip.
  2151.  
  2152.                             
  2153. Funktion 06h Alarmzeit einstellen (AT und nachfolgende)
  2154. Aufruf   AH 06h
  2155.          CH Stunden in BCD
  2156.          CL Minuten in BCD
  2157.          DH Sekunden in BCD
  2158. Rückgabe CF gesetzt falls Alarm schon einstellt oder Uhr nicht bereit ist
  2159. Anmerkung 1) setzt Alarm im CMOS Datum/Uhrzeit Chip. Int 4Ah wird bei erreichen
  2160.              der spezifizierten Alarmzeit aufgerufen und zwar alle 24 Stunden
  2161.              bis die mit Int 1Ah/fn 07h gelöscht wird.
  2162.           2) ein Nebenefekt dieser Funktion ist, daß die Taktgeber chip's Interrupt
  2163.              Ebene (IRQ8) aktiviert ist.
  2164.          3) es kann ausschließlich eine Alarmzeit zur Zeit aktiv sein.
  2165.          4) das Programm das diese Funktion benutzt, muß die Adresse von seinem Interrupt
  2166.             Handler für den Alarm in dem Vektor für Int 4Ah setzen.
  2167.  
  2168.  
  2169. Funktion 07h löschen Alarmzeit (AT und nachfolgende)
  2170. Aufruf   AH 07h
  2171. Rückgabe keine
  2172. Anmerkung 1) annulliert irgendwelche Alarmzeiten auf dem CMOS Datum/Uhrzeit Chip.
  2173.           2) dies Funktion schalten nicht die Taktgeber chip's Interrupt Ebene (IRQ8) aus.
  2174.  
  2175.  
  2176. Funktion 08h einstellen Einschaltzeit (Convertible)
  2177. Aufruf   AH 08h
  2178.          CH Stunden in BCD
  2179.          CL Minuten in BCD
  2180.          DH Sekunden in BCD
  2181.  
  2182.  
  2183. Funktion 09h lesen Alarmzeit und Status (Convertible und PS/2 Modell 30)
  2184. Aufruf   AH 09h
  2185. Rückgabe CH Stunden in BCD
  2186.          CL Minuten in BCD
  2187.          DH Sekunden in BCD
  2188.          DL Alarm Zustand:
  2189.             00h falls Alarm nicht eingeschaltet ist
  2190.             01h falls Alarm eingeschaltet ist, aber kein Neustart des Systems ausgeführt wird
  2191.             02h falls Alarm einen Neustart des Systems bewirkt
  2192.  
  2193.  
  2194. Funktion 0Ah lesen Tageszähler (PS/2)
  2195. Aufruf   AH 0Ah
  2196. Rückgabe CF gesetzt wenn Fehler
  2197.          CX Anzahl Tage seit dem Jan 1, 1980
  2198. Anmerkung gibt den Inhalte des Tageszählers vom System zurück.
  2199.  
  2200.  
  2201. Funktion 0Bh einstellen Tageszähler (PS/2)
  2202. Aufruf   AH 0Bh
  2203.          CX Anzahl Tage seit dem Jan 1, 1980
  2204. Rückgabe CF gesetzt wenn Fehler
  2205. Anmerkung speichert einen beliebigen Wert im Tageszähler des Systems.
  2206.  
  2207.  
  2208. Funktion 80h einstellen Sound Multiplexor (PCjr) (Tandy 1000?)
  2209. Aufruf   AH 80h
  2210.          AL Sound Quelle
  2211.             00h Quelle ist der 8253 Zeit-Zähler Chip, Kanal 2
  2212.             01h Quelle ist die Kassetteneingabe
  2213.             02h Quelle ist I/O Kanal "Audio In "Zeile
  2214.             03h Quelle ist der TI Sound Generator Chip
  2215. Rückgabe keine
  2216. Anmerkung einstellen der Quelle für die Töne die auf dem
  2217.           Audio out Bus Zeile oder RF Modulator erscheinen.
  2218.  
  2219.  
  2220. Funktion 1Ah lesen Uhrzeit und Datum (AT&T 6300)
  2221. Aufruf   AH 0FEh
  2222. Rückgabe BX Tageszähler (1= Jan 1, 1984)
  2223.          CH Stunden
  2224.          CL Minuten
  2225.          DH Sekunden
  2226.          DL hunderstel
  2227. Anmerkung Tageszähler in BX ist eindeutig zu AT&T/Olivetti Computer.
  2228.  
  2229.  
  2230.  
  2231.  ┌─────────────────────────────────────────────────────────────────────────────┐
  2232.  │ Interrupt 1Bh Control-Break                                           3**14 │
  2233.  └─────────────────────────────────────────────────────────────────────────────┘
  2234.  (0:006Ch) dieser Interrupt wird aufgerufen sobald der Tastatur Handler auf den IBM
  2235.            Maschinen erkennt das Ctrl und Break gleichzeitig gedrückt wurden. DOS
  2236.            belegt diesen Interrupt normalerweise mit seiner eigenenen Ctrl-Break Routine.
  2237.  
  2238. Anmerkung 1) falls der Abbruch sich während eines Interrupts ereignete, müssen ein oder mehrere
  2239.              EOI Befehle zu der 8259 programmierbaren Interrupt Steuereinheit
  2240.              gesendet werden.
  2241.           2) alle I/O Geräte sollte sein löschen in Fach eine Arbeitsgang war laufend an
  2242.              der Uhrzeit.
  2243.           3) zeigt normalerweise auf eine IRET Instruktion während der Systeminitialisierung,
  2244.              deshalb es tut nichts, aber einige Programme ändern es, um ein Ctrl-C
  2245.              Abtastcode zurückzugeben und so ein Aufruf von int 23h erfolgt.
  2246.  
  2247.  
  2248.  
  2249.  ┌─────────────────────────────────────────────────────────────────────────────┐
  2250.  │ Interrupt 1Ch Zeit-Zähler Takteinheit                                 3**15 │
  2251.  └─────────────────────────────────────────────────────────────────────────────┘
  2252.  (0:0070h)
  2253. Anmerkung 1) aufgerufen 18.2065 mal pro Sekunde vom int 08h Interrupt.
  2254.           2) zeigt normalerweise auf einen IRET falls nicht PRINT.COM installiert ist.
  2255.           3) falls eine Anwendung bewegt den Interrupt Zeiger, es ist dafür verantwortlich
  2256.              daß die Anwendung alle Rgister sichert und zrücksichert die
  2257.              modifizierte werden.
  2258.          4) gibt zurück Werte an der absoluten Adresse 40:6x (BIOS Datenbereich); Anzahl
  2259.             Takteinheiten seit Mitternacht
  2260.             40:6C Wort Zeitzähler höherwertiges Wort
  2261.             40:6E Wort Zeitzähler niederwertiges Wort
  2262.          5) Ventura Publisher 2.0 benutzt diesen Interrupt und läßt keine nachträglichen
  2263.             Vektor Rückzuweisungen zu. Dies ergibt Probleme mit einigen TSRs und
  2264.             Netzwerk Software.
  2265.  
  2266.  
  2267.  ┌─────────────────────────────────────────────────────────────────────────────┐
  2268.  │ Interrupt 1Dh Vektor von Video Initialisierung Parameter              3**16 │
  2269.  └─────────────────────────────────────────────────────────────────────────────┘
  2270.  (0:0074h) diese Doppelwortadresse zeigt zu 3 Sätze von 16-bytes die die Daten
  2271.            zum initialisieren der Video Modi für Video Modi 0 & 1 (40 Spalten),
  2272.            2 & 3 (80 Spalten), und 4, 5 & 6 (Grafik) auf dem Motorola 6845 CRT
  2273.            Steuereinheit Chip beinhalten.
  2274.  6845 Register: 
  2275.           R0 horizontal total (horizontale sync in Zeichen)
  2276.           R1 horizontal angezeigt (Zeichen je Zeile)
  2277.           R2 horizontale sync Position (bewegen Anzeige nach links oder rechts)
  2278.           R3 sync Schriftbreite (vertikal und horizontal pulsieren: 4-bits jede)
  2279.           R4 vertikal total (totale Zeichen Zeilen)
  2280.           R5 vertikal Anpassung (Anpassung für 50 oder 60 Hz Auffrischung)
  2281.           R6 vertikal angezeigt (Zeilen von chars angezeigt)
  2282.           R7 vertikal sync Position (Zeilen versetzten aufwärts oder abwärts)
  2283.           R8 Interlace (Bits 4 und 5) und Asymmetrie (Bits 6 und 7)
  2284.           R9 max Rasterzeile addr (Rasterzeilen pro Zeichen Zeile)
  2285.           R10 Cursor Start (Startzeile des Cursors)
  2286.           R11 Cursor Ende (Endezeile des Cursors)
  2287.           R12 Videospeicher Anfangsadresse höherwertiges Byte (6 Bits)
  2288.           R13 Videospeicher Anfangsadresse niederwertiges Byte (8 Bits)
  2289.           R14 Cursor Adresse höherwertiges Byte (6 Bits)
  2290.           R15 Cursor Adresse niederwertiges Byte (8 Bits)
  2291.  
  2292.  6845 Video Init Tabellen: 
  2293.         Tabelle für Modi 0 und 1    \
  2294.         Tabelle für Modi 2 und 3     \ jede Tabelle ist 16 Bytes lang und
  2295.         Tabelle für Modi 4, 5, und 6 / enthält Werte für das 6845 Register
  2296.         Tabelle für Modus 7         /
  2297.       4 Wörter Größe vom Video RAM für Modi 0/1, 2/3, 4/5, und 6/7
  2298.       8 Bytes Anzahl Spalten in jedem Modus
  2299.       8 Bytes Video Steuereinheit Modusbyte für jeden Modus
  2300. Anmerkung 1) da sind 4 getrennte Tabellen, und alle 4 müssen initialisiert falls alle
  2301.              Video Modi benutzt werden sollen.
  2302.           2) der Initialisierung Code vom Computer setzt diesen Vektor beim
  2303.              Systemstart auf die ROM BIOS Video Routinen.
  2304.           3) IBM empfiehlt daß falls dies Tabelle modifiziert werden muß, diese ins RAM
  2305.              zu kopieren und dort ausschließlich die benötigten Änderungen durchzuführen.
  2306.  
  2307.  
  2308.  
  2309.  ┌─────────────────────────────────────────────────────────────────────────────┐
  2310.  │ Interrupt 1Eh Vektor von Diskettencontroller Parameter                3**17 │
  2311.  └─────────────────────────────────────────────────────────────────────────────┘
  2312.  (0:0078h) Doppelwortadresse zeigt zur Datenbasistabelle die vom BIOS benutzt wird.
  2313.            Vorgegeben Stelle ist an 0F000:0EFC7h. Format 11-byte Tabelle:
  2314.            Bytes:
  2315.                 00h 4-bit Step Rate, 4-bit Kopf Entladezeit
  2316.                 01h 7-bit Kopf Ladezeit, 1-bit DMA Kennzeichen
  2317.                 02h 54. 9254 ms Takteinheiten - Verzögerung für Motor aus (36-38 normal)
  2318.                 03h Sektorgröße: 
  2319.                     00h 128 Bytes
  2320.                     01h 256 Bytes
  2321.                     02h 512 Bytes
  2322.                     03h 1024 Bytes
  2323.                 04h letzter Sektor auf Spur         (normalerweise 8 oder 9)
  2324.                 05h inter-sector Lücke beim Lesen/Schreiben (normalerweise 42)
  2325.                 06h Datenlänge für DMA Transfer     (normalerweise 0FFh)
  2326.                 07h Lückenlänge zwischen Sektoren fürs Formatieren (normal 80)
  2327.                 08h Sektor Füllbyte fürs Formatieren (normal 0F6h)
  2328.                 09h Kopf sich niederlassen Uhrzeit( in Millisekunden)( 15 zu 25 bezeichnend)
  2329.                         DOS 1. 0 0 
  2330.                         DOS 1. 10 0 
  2331.                         DOS 2. 10 15 
  2332.                         DOS 3. 1 1 
  2333.                 0Ah Motor Startzeit (in 1/8 Sek Intervalle) (2-4 normal)
  2334.                         DOS 2.10  2
  2335. Anmerkung 1) dieser Vektor zeigt zu den ROM BIOS Diskettentabellen bei der System-
  2336.              initialisierung
  2337.           2) IBM empfiehlt daß falls dies Tabelle modifiziert werden muß, diese ins RAM
  2338.              zu kopieren und dort ausschließlich die benötigten Änderungen durchzuführen.
  2339.           3) einige Versionen von DOS 3.2 enthalten einen Fehler. DOS 3.2 nimmt an daß das
  2340.              dwort an 0070:0F37 die Adresse von dem Diskettenparameterblock enthält
  2341.              und ändert die Werte in diesem Block. Diese Stelle enthält eine
  2342.              Kopie von dem Wert an 0:78 (int 1Eh, DISK_POINTER) falls DOS von einer
  2343.              Diskette gestartet wurde, aber sobald von der Festplatte gestartet wurde, enthält die Stelle
  2344.              0:0. Dies verleitet zu falschen Annahmen, besonders sobald laufen unter ein
  2345.              Debugger weil DOS überschreibt ein Stück von den Interrupt Vektoren für die
  2346.              Interrupts 1 bis 3. Die Lösung des Problems ist ein Umstieg auf die nächsthöhere
  2347.              DOS 3.3 Version oder den Festplattenparameter Vektor zu 70:0F37 zu kopieren bevor
  2348.              das Programm gestartet wird.
  2349.  
  2350.  
  2351.  
  2352.  ┌─────────────────────────────────────────────────────────────────────────────┐
  2353.  │ Interrupt 1Fh Ptr zu Grafikzeichen Erweiterungen (zweiter Teil)       3**18 │
  2354.  └─────────────────────────────────────────────────────────────────────────────┘
  2355.  (0:007Ch) dies ist der Zeiger zu den Daten die von den ROM Video Routinen benutzt werden,
  2356.                 um die Zeichen über ASCII 127 in dem mittleren und hochauflösenden Video
  2357.                 Modus der CGA Karte anzuzeigen.
  2358.  
  2359. Anmerkung 1) Doppelwortadresse zeigt zu einer 1K großen Tabelle die sich aus den 28 8-byte Zeichen
  2360.              Bitmusterdefinition zusammensetzt. Das erste Byte eines jeden Zeichens ist der Anfang der Zeile,
  2361.              und das letzte Byte ist die untere Zeile.
  2362.           2) die ersten 128 Zeichen Muster sind im System ROM enthalten.
  2363.           3) dieser Vektor wird auf 000:0 gesetzt bei der Systeminitialisierung.
  2364.           4) wird vom DOS externen GRAFTABL Befehl benutzt.
  2365.  
  2366.  
  2367.