PofoWiki

Die ultimative Informationsquelle zum ATARI Portfolio

Benutzer-Werkzeuge

Webseiten-Werkzeuge


hardware:doku:techrefguide:abschnitt3

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
hardware:doku:techrefguide:abschnitt3 [01/05/2008 00:05] – interne Links eingefügt. uxthardware:doku:techrefguide:abschnitt3 [13/06/2020 18:06] (aktuell) – Beispiel zum DTMF karlmueller
Zeile 119: Zeile 119:
  
 ===== 3.3 SYSTEMSPEZIFISCHES BIOS ===== ===== 3.3 SYSTEMSPEZIFISCHES BIOS =====
 +
  
 ==== 3.3.1 Int 61H - Erweiterte BIOS Funktionen ==== ==== 3.3.1 Int 61H - Erweiterte BIOS Funktionen ====
Zeile 323: Zeile 324:
              DL         aus              DL         aus
              DL         ein              DL         ein
 +\\
 +Die Beschreibung zum DTMF ist nicht ganz vollständig, deshalb hier ein kurzes Programmteil:
 +  ; Quelle: ATARI.RSC Vol. V, Issue 2 December 1992
 +  
 +  ; DTMF duration testing under
 +  ; assembled under TASM
 +  
 +  ; 2710h(10000) = short duration,
 +  ; 72e3h(29411) = default duration
 +  
 + .model small
 + .stack 100h
 + .data
 +  
 +  dtmf_dur dw 0
 +  temp dw 0
 +  numstr db '00001111',0
 +  
 +        .code
 +  mov ax, @data
 +  mov ds, ax
 +  
 +  mov ah, 18h ; Mute States call
 +  mov al, 08h ; Get DTMF duration
 +  int 61h
 +  
 +  mov dtmf_dur, dx         ; save old duration value
 +                                  ; from register
 +  
 +  mov ah, 18h ; Mute States call
 +  mov al, 09h ; Set DTMF duration
 +  mov dx, 2710h ; stuff new duration value
 +  int 61h ; into register
 +  
 +  mov ah, 17h ; dial number to check tone
 +  mov temp, @data ; duration
 +  mov ds, temp
 +  mov si, OFFSET numstr
 +  mov cx, 8h ; length of string = 8 characters
 +  int 61h
 +  
 +  mov dx, dtmf_dur         ; stuff old duration value
 +                                  ; into register
 +  mov ah,18h ; Set DTMF duration
 +  mov al,09h
 +  int 61h
 +  
 +  mov ah, 17h ; dial number to recheck
 +                                  ; old tone duration
 +  mov temp, @data
 +  mov ds, temp
 +  mov si, OFFSET numstr
 +  mov cx, 8h
 +  int 61h
 +  
 +  ;;;;;;;;;;;;;;;;;
 +  ;terminate
 +  
 +  mov ah,4ch
 +  int 21h
 +  
 +  end
 \\ \\
 \\ \\
Zeile 421: Zeile 484:
   Rückgabe:  Wenn AL=0   Rückgabe:  Wenn AL=0
              DS:00              DS:00
-**Anmerkung:** Dies kann verwendet werden um den PSP der internen Anwendungen zu ermitteln, was nötig ist um sie zu sperren (siehe Anhang [[hardware:doku:techrefguide:anhang_d|D]]).\\+**Anmerkung:** Dies kann verwendet werden um den PSP der internen Anwendungen zu ermitteln, was nötig ist um sie zu sperren (siehe Anhang [[hardware:doku:techrefguide:anhangd|D]]).\\
 \\ \\
 \\ \\
Zeile 521: Zeile 584:
 **__Fn 2CH__ BIOS-Versionsnummer ermitteln**\\ **__Fn 2CH__ BIOS-Versionsnummer ermitteln**\\
   Parameter: AH    2CH   Parameter: AH    2CH
-  Rückgabe:  DS:BX Adresse der BIOS-Versionsnummer+  Rückgabe:  DS:DX Adresse der BIOS-Versionsnummer
 **Anmerkung:** Die Versionsnummer besteht aus einer Haupt- und einer Nebennummer, mit einem "$" terminiert. Ein typisches Beispiel ist "1.050$". Verwenden sie Int 60H Fn 0H.\\ **Anmerkung:** Die Versionsnummer besteht aus einer Haupt- und einer Nebennummer, mit einem "$" terminiert. Ein typisches Beispiel ist "1.050$". Verwenden sie Int 60H Fn 0H.\\
 +Das Technische Referenzhandbuch ist falsch. Es muss DX und nicht BX sein (Quelle: The Resource File Jun 1990, Seite 11. 
 \\ \\
 \\ \\
Zeile 749: Zeile 813:
    C:\AUTOEXEC.BAT    C:\AUTOEXEC.BAT
 Die CONFIG.SYS Datei wird immer von Laufwerk C geladen und kann nicht umgangen werden.\\ Die CONFIG.SYS Datei wird immer von Laufwerk C geladen und kann nicht umgangen werden.\\
 +
  
  
Zeile 754: Zeile 819:
 Eine RUN Datei ist ein speziell geschriebenes Programm, dass direkt von einer CCM ausgeführt werden kann ohne in das TPA (Transient Programm Area) geladen werden zu müssen. Ein offensichtlicher Vorteil dieser Art der Ausführung ist die Minimierung des Gebrauchs des Hauptspeichers.\\ Eine RUN Datei ist ein speziell geschriebenes Programm, dass direkt von einer CCM ausgeführt werden kann ohne in das TPA (Transient Programm Area) geladen werden zu müssen. Ein offensichtlicher Vorteil dieser Art der Ausführung ist die Minimierung des Gebrauchs des Hauptspeichers.\\
 \\ \\
-Eine RUN Datei kann vom Befehlsprozessor ausgeführt werden indem man RUN <Dateiname> tippt oder als normales Programm auf der DOS-Eene durch Aufruf des Int 21H Fn 4BH, aber mit AL auf 80H und CL auf CCH gesetzt.\\+Eine RUN Datei kann vom Befehlsprozessor ausgeführt werden indem man RUN <Dateiname> tippt oder als normales Programm auf der DOS-Ebene durch Aufruf des Int 21H Fn 4BH, aber mit AL auf 80H und CL auf CCH gesetzt.\\
 \\ \\
 Es gibt mehere Bedingungen für Programme die den Befehl RUN verwenden:\\ Es gibt mehere Bedingungen für Programme die den Befehl RUN verwenden:\\
Zeile 856: Zeile 921:
  
 ==== 3.9.1 Speicherungsformat des Zeitplaners ==== ==== 3.9.1 Speicherungsformat des Zeitplaners ====
 +Der eingebaute Terminplaner speichert seine Daten im standard ASCII Datei-Format. Um verschiedene Datumsformate zu umgehen, speichert der Terminplaner sie im englischen Format.\\
 +\\
 +Bestimmte Informationen, wie Wiederholungsdaten und Wecker-Informationen werden zusammen mit den Daten gespeichert.\\
 +\\
 +Es folgt ein Beispiel einer Terminplaner-Datei:\\
 +
 +   6/07/89
 +   14:14 Technische Referenz
 +   20:20 Nach Hause
 +
 +Wenn ein Eintrag ein sich wiederholendes Ereignis ist, so wird der Uhrzeit ein Code-Zeichen vorangesetzt, dass den Wiederholungszeitrum angibt:\\
 +
 +    täglich
 +    wöchentlich
 +    Wochentage (Mon-Fre)
 +    monatlich
 +    jährlich
 +
 +Wenn dem Eintrag eine Weckfunktion zugeordnet ist, so wird das Symbol"@" in der Zeile der Uhrzeit vorangestellt.\\
 +\\
 +Wenn ein Eintrag eine Weckfunktion hat und ein sich wiederholendes Ereignis ist, so geht der Wiederholungscode dem Weckzeichen voraus.\\
 +\\
 +Zum Beispiel:
 +      6/07/89
 +    20:20 Nach Hause
 +      7/07/89
 +    14:48 Hallo da!
 +   w@ zum Tennis
 +
 +Der erste Eintrag ist ein sich nicht wiederholendes Ereignis mit Weckfunktion. Der zweite Eintrag wiederholt sich täglich und der dritte wöchentlich und löst Portfolios Weckfunktion aus.\\
 +\\
 +Der Terminplaner sortiert die Einträge chronologisch wann immer er geladen wird.
 +\\
 +
  
 ==== 3.9.2 Formate der Systemdateien ==== ==== 3.9.2 Formate der Systemdateien ====
 +Es gibt drei System-Dateien die die Funktionsweise des BIOS und der internen Anwendungen steuern. Jede dieser Dateien hat ihr eigenes festgelegtes standard Datei-Format. Diese sind:\\
 +   Klemmbrett (C:\SYSTEM\CLIPBORD.DAT)
 +   Wiederherstellen (C:\SYSTEM\UNDELETE.DAT)
 +   Permanente Daten (C:\SYSTEM\PERMDATA.DAT)
 +Alle drei Dateien werden in den Hauptspeicher geladen, wenn eine Anwendung aufgerufen wird. Wenn wärend der Bearbeitung Daten aus diesen Dateien geändert werden, so geschieht dies nur in der Kopie im Hauptspeicher. Alle drei Dateien werden neu geschrieben wenn die Anwendungen beendet werden (z.B.: druch Drücken der Esc-Taste oder durch Beenden im Hauptmenü).\\
 +\\
  
 === 3.9.2.1 CLIPBORD.DAT === === 3.9.2.1 CLIPBORD.DAT ===
 +Dies ist die Datei, die von den Anwendungen als Klemmbrett verwendet wird. Es ist ein Datenblock, der mit einer Null (00H) terminiert ist. Zeilenumbrüche werden al 0DH gespeichert, ohne den anschließenden Zeilenvorschub 0AH. Die maximale Größe des Klemmbretts ist 8K Zeichen. Dies muss einschließlich des Null-Terminators sein.\\
 +\\
 +Wenn die Datei kein 00H Terminierungsbyte enthält, dann wird die Datei nicht ins Klemmbrett geladen. Ähnlich, wenn die Datei größer als die maximal erlaubte Anzahl an Bytes ist, wird sie nicht geladen. In beiden Fällen, wenn die Datei nicht geladen wird, sie wird beim Verlassen der Anwendung mit einer neuen Datei überschrieben.\\
 +\\
 +Wenn das Klemmbrett das normale Text-Format (0DH, 0AH) hat, so wird es nur vom Text-Editor oder dem Termiplaner geladen.\\
 +\\
  
 === 3.9.2.2 UNDELETE.DAT === === 3.9.2.2 UNDELETE.DAT ===
 +Die Wiederherstellungs-Datei wird verwendet, um alle Zeichen oder Blöcke, die in den Anwendungen gelöscht werden zu speichern. Sie besteht aus einer Anzahl von Datenblöcken. Jeder Block stellt eine Gruppe von Zeichen dar, die mit einem Befehl gelöscht wurden. Das Format eines Blocks ist wie folgt:
 +  <DATA> <00H> <DIR>
 +<DATA> sind die Bytes die gelöscht wurden. Wenn ein Datenblock gelöscht wird, der Zeilenumbrüche beinhaltet, so werden diese als <0DH>, und nicht <0DH><0AH> gespeichert.\\
 +\\
 +Das Byte 00H wird verwendet um die Länge des gelöschten Blocks zu ermitteln.\\
 +\\
 +<DIR> ist ein Ein-Byte Code das angibt in welche Richtung gelöscht wurde. Wenn die Daten nach links gelöscht wurden (z.B. mit der Korrektur-Taste), dann enthält dieses Byte 00H. Wenn die Daten nach rechts gelöscht wurden (z.B. mit Entf), dann ist dieses Byte 01H.\\
 +\\
 +Die höchste Anzahl an Bytes, die die Datei UNDELETE.DAT enthalten kann ist 2000. Wenn die Datei mehr Bytes als diese Anzahl entält so wird sie ignoriert und beim Verlassen der Anwendung durch eine neue ersetzt.\\
 +\\
 +Wenn die Datei UNDELETE.DAT nicht das richtige Format hat sind die Folgen unvorhersehbar. Warscheinlich werden die Daten in der Datei unlesbar.\\
 +\\
  
 === 3.9.2.3 PERMDATA.DAT === === 3.9.2.3 PERMDATA.DAT ===
 +Das Format der System-Daten Datei ist wie folgt:\\
  
 +   Bytes (in HEX)    Funktion:
 +                   Nicht Null: Wiederherstellungspuffer bereit
 +                   Nicht Null: Wiederherstellungspuffer bei beenden speichern
 +                   Nicht Null: Klemmbrett bereit
 +                   Nicht Null: Klemmbrett bei beenden speichern
 +   4..6              reserviert
 +   
 +                     Rechenblatt:
 +                   Nicht Null: Rahmen an
 +   8..56             Pfad und Name der zuletzt verwendeten Datei
 +   057               0: zuletzt verwendete Datei laden, 0FFH: nein 
 +   058..05B          dreistelliges, null-terminiertes Währung-Symbol 
 +   05C               anfängliches Dezimaltrennzeichen "." (2Eh) oder "," (2Dh)=”,” 
 +   05D               Drucker: Standard-Papierbreite 
 +   05E..060          reserviert
 +   
 +                     Terminplaner:
 +   061               Nicht Null: Rahmen an 
 +   062..0B0          Pfad und Name der zuletzt verwendeten Datei 
 +   0B1..0B4          reserviert 
 +   
 +                     Text-Editor: 
 +   0B5               Nicht Null: Rahmen an 
 +   0B6..104          Pfad und Name der zuletzt verwendeten Datei 
 +   105..106          oberste Zeile von Bildschirm 0 ist erste Zeile in Datei 
 +   107..108          aktuelle Cursor-Zeile, 0 ist erste Zeile 
 +   109..10A          Cursor-Spalte in aktueller Zeile 
 +   10B               rechter Rand 
 +   10C               Nicht Null: Zeilenumbruch an 
 +   10D..10E          reserviert
 +   
 +                     Adressbuch:
 +   10F               Nicht Null: Rahmen an
 +   110..15E          Pfad und Name der zuletzt verwendeten Datei
 +   15F..168          Vorwahl in ASCII, null-terminiert
 +   169..16F          reserviert
 +   
 +                     Taschenrechner:
 +   170               Nicht Null: Rahmen an
 +   171..1BF          reserviert
 +   1C0               M1 Vorzeichen: wenn negativ dann Bit 7 gesetzt
 +   1C1..1C2          M1 Exponent, Wort mit Vorzeichen, 0:1.000<=mant<2.000
 +   1C3..1CA          M1 Mantisse
 +   1CB..1D5          Memory 2
 +   1D6..1E0          Memory 3
 +   1E1..1EB          Memory 4
 +   1EC..1F6          Memory 5 
 +   1F7               Format: 0=allgemein, 1=dezimal, 2=wissenschaftlich, 3=technisch 
 +   1F8               Stellen hinter dem Komma 
 +   1F9               Trennzeichen: 0=keines, sonst Trennzeichen 
 +   1FA               Dezimaltrennzeichen: 0=”.”, sonst “,” 
 +   
 +                     Einstellungen:
 +   1FB               reserviert 
 +   1FC..24A          Pfad und Name der Druckzieldatei 
 +   24B..24E          reserviert 
 +   24F               Druckziel, 0: parallel, 1: seriell, 2: Datei 
 +   250               Zeilen pro Druckseite 
 +   251               Länge des Drucker Setup-Codes 
 +   252..2D1          Drucker Setup-Codes, ASCII-Zeichen, z.B. Esc=1BH
 +   2D2               Drucker-Code für Zeilenende     <CR>
 +                                                     <CR-LF>
 +                                                     <CR-LF-LF>
 +   2D3               Anzahl Zeilen für oberen Rand 
 +   2D4               Anzahl Zeilen für unteren Rand 
 +   2D5               Zeichen-Indentierung für linken Rand 
 +   2D6               Baudrate      0          110
 +                                            150
 +                                            300
 +                                            600
 +                                            1200
 +                                            2400
 +                                            4800
 +                                            9600 
 +   2D7               Parität                keine
 +                                            ungerade
 +                                            gerade 
 +   2D8               Datenbits,    2          7 Bits
 +                                            8 Bits 
 +   2D9               Stop-Bits              1 Stopp Bit
 +                                            2 Stopp Bits 
 +
 +Die Datei PERMDATA.DAT enthält derzeit 730 Byte.\\
 +\\
 ===== 3.10 Funktionen der Anwendungsumgebung ===== ===== 3.10 Funktionen der Anwendungsumgebung =====
  
 ==== 3.10.1 Verfügbare Funktionen ==== ==== 3.10.1 Verfügbare Funktionen ====
 +Folgende Dienste stehen in allen ROM-Versionen zur Verfügung:\\
 +   Dienst            Funktion
 +   
 +   00H               Versionsnummer (der ROMs) lesen
 +   01H               Zeileneditor
 +   02H               aktuelle Anwendung ermitteln
 +   03H               reserviert für Sonderfunktionen
 +   .
 +   .
 +   08H               Bildschirm speichern/wiederherstellen
 +   09H               Rahmen zeichnen
 +   .
 +   .
 +   0FH               Menü-Steuerung
 +   10H               Rahmenfläche berechnen
 +   .
 +   .
 +   12H               eingerahmte Meldungen
 +   .
 +   14H               eingerahmte Fehlermeldungen
 +
 +\\
 +
 +
  
 ==== 3.10.2 Dataillierte Beschreibung der Funktionen ==== ==== 3.10.2 Dataillierte Beschreibung der Funktionen ====
 +Wo Koordinaten in 16-Bit Registern angegeben werden (z.B. obere linke Ecke, untere rechte Ecke), ist das höhere Byte die y-Koordinate, und das untere Byte die x-Koordinate.\\
 +\\
 +Bei allen Routinen zum zeichnen von Rahmen (einschließlich Menüs und Hilfen), wenn der Rahmen größer als die tatsächliche Bildschirmgröße ist, so werden die Zeichen falsch dargestellt.\\
 +\\
 +\\
 +**__Fn 00H__ Versionsnummer (der ROMs) lesen**\\
 +  Parameter: AH    00H
 +  Rückgabe:  DS:DX Versionsnummer (Null-terminierte Zeichenkette)
 +\\
 +\\
 +**__Fn 01H__ Zeileneditor**\\
 +  Parameter: DS:SI Zeiger auf Steuerungsstruktur
 +  Rückgabe:  AX    das Zeichen mit dem die Eingabe beendet wurde.
 +  Beschreibung:    Bearbeitung einer Textzeile. Der Text kann eingerahmt sein (oder nicht),
 +                   und der Text kann länger sein als die Bildschirmbreite. Scroll-Ränder
 +                   stehen an jedem Ende der Zeile bereit. Die Steuerungsstruktur ist wie
 +                   folgt:
 +  ep_targ    dw    ?   ;FAR Zeiger auf die zu bearbeitende Zeichenkette. Das Ergebnis ist
 +             dw    ?   ;ebnfalls hier zu finden. Alle Zeichenketten Null-terminiert.
 +  ep_pos     dw    ?   ;Anfangsposition des Cursors (bei Null beginnend).
 +  ep_max     dw    ?   ;maximale Länge der zu bearbeitenden Zeichenkette.
 +  ep_xpos    db    ?   ;Bildschirmposition Spalte (bei Null beginnend).
 +  ep_ypos    db    ?   ;Bildschirmposition Zeile (bei Null beginnend).
 +  ep_mode    db    ?   ;wenn auf 2 eingestellt, so wir die Zeichenkette zu Beginn nicht
 +                       ;gelöscht (z.B. Datei laden); wenn auf 0FFH eingestellt, so wird die
 +                       ;Zeichenkette zuerst gelöscht (z.B. Bearbeitung einer Zelle in der
 +                       ;Tabellenkalkulation).
 +  ep_hit     dw    ?   ;ursprünglicher Tastendruck der zu verarbeiten ist, bevor der Tastendruck
 +                       ;des Anwenders verarbeitet wird. Meistens benutzt um Zeichen vorzubearbeiten.
 +  ep_tit     dw    ?   ;Rahmenüberschrift und Eingabeaufforderung in der Form:
 +             dw    ?   ; DB "Titel",0,"Eingabe: ",0,0
 +  ep_exit    dw    ?   ;eine Reihe von Tatstencodes (siehe unten), die es erlauben den Zeileneditor
 +             dw    ?   ;zu verlassen.
 +  ep_fn      dw    ?   ;Adresse der Routine für die Tastaturabrage.
 +             dw    ?   ;Diese sollte einen 16-Bit Wert in AX ablegen.
 +  ep_wid     db    ?   ;maximale Rahmen- oder Bildschirmgröße.
 +  ep_wind    db    ?   ;Steht auf 0FFH für keinen Rahmen, auf 0 für einen einfachen Rahmen und
 +                       ;auf 1 für einen doppelten Rahmen.
 +  ep_res     dW    ?   ;reserviert
 +             dw    ?   
 +  ep_udel    dw    ?   ;Adresse für die Routine für die Wiederherstellung.
 +             dw    ?   ;Diese Routine wird jedes mal aufgerufen wenn ein Zeichen gelöscht wird.
 +                       ;Wenn nicht benötigt, verwenden sie eine Dummy-Routine (ret far).
 +                       ;DS:BX zeigt auf den gelöschten Text. AH ist 0 für links löschen,
 +                       ;und 1 für rechts löschen.
 +                       ;Vermeiden sie es Segmente zu wechseln.
 +
 +**Anmerkungen: **
 +  1. Der Zielpuffer sollte mindestens "max"+1 lang sein, um die Null-Terminaton zu beinhalten.
 +  2. Falls sie einen Text vorgeben wollen, schreiben sie ihn in den Zielpuffer, null-terminiert.
 +  3. Die Reihe von Beeindigungs-Codes besteht aus 16-Bit "Tasten". Das obere Nibbel ist bei den
 +     normalen 256 Zeichen gleich Null, aber für Steuerungstasten wie Start, Ende, u.s.w. ist es 1.
 +  4. TASTENCODES: normale ASCII-Zeichen, dargestellt als AL=ASCII-Code, AH=0.
 +     Zum Beispiel "A" ist 0041H. Erweiterte Tastencodes werden als AL=Scancode, AH=1 (z.B. linke
 +     Cursortaste=0148H) dargestellt. Spezielle (DIP-spezifische) Tastencodes werden als AL=code,
 +     AH=2/3 dargestellt. Z.B. bevor sie wiederhergestellte Zeichen senden (immer eingefügt, kein ^
 +     verarbeitet) senden sie 0201H, am Ende der Wiederhergestellten Zeichen senden sie 0202H.
 +  5. Wenn sie einen Rahmen angeben, so werden beim Bearbeiten 2 Bytes von "wid" genommen.
 +  6. Ähnlich, wenn sie eine Eingabeaufforderung angeben haben sie weniger Spielraum bei der
 +     Bearbeitung.
 +  7. Doppelwort Zeiger und Adressen haben die niederwertige Adresse im höherwertigen Wort. 
 +\\
 +\\
 +**__Fn 02H__ aktuelle Anwendung ermitteln**\\
 +  Parameter: DL       Auf 0FFH eingestellt
 +  Rückgabe:           aktuelle Anwendung
 +                      wobei:
 +
 +                      AL=0     keine Anwendung
 +                             Tabellenkalkulation
 +                             Terminplaner
 +                             Textverarbeitung
 +                             Adressbuch
 +                             Taschenrechner
 +                             Systemeinstellungen
 +                             Anwendungsmenü
 +
 +Beschreibung: Ermittelt die aktuelle Anwendung. Dies wird meistens von einem Editor-Hook oder TSR-Programm benutzt.\\
 +\\
 +\\
 +**__Fn 03H__ reserviert für Sonderfunktionen**\\
 +Es werden eine Reihe von "Hooks" (Haken) in die Textverarbeitung bereit gestellt, dei es dem Anwender erlauben die Textverarbeitung von aussen zu steuern.\\
 +\\
 +Es gibt 6 Editor-Hooks. Diese machen es möglich, dass eine Anwendung innerhalb der Textverarbeitung geladen werden kann, die zugang zu einer begrenzten Zahl von internen Funktionen hat, die den Text oder die Umgebung verändern können.\\ 
 +   EDHO_GOTO   Cursor bewegen
 +   EDHO_GET    Cursor-Position ermitteln
 +   EDHO_REF    Bildschirm auffrischen
 +   EDHO_LOC    Position des Zeichens am Cursor ermitteln
 +   EDHO_INS    Zeichenkette einfügen
 +   EDHO_DEL    Zeichen löschen
 +\\
 +\\
 +**EDHO_GOTO    Cursor bewegen**\\
 +  Parameter: AL   00H
 +             CX   Wiederholungszähler
 +             DX   Art der Bewegung
 +  Rückgabe:  AX   Anzahl der bewegten Stellen
 +
 +Anmerkung: Es gibt 6 Arten von Bewegung:
 +          Zeichen
 +          Wort
 +          Zeile
 +          Anfang/Ende Zeile
 +          Anfang/Ende Absatz
 +          Anfang/Ende Datei
 +
 +Wenn der Wiederholungszähler negativ ist, so ist die Bewegung rückwärts.\\
 +\\
 +\\
 +**EDHO_GET     Cursor-Position ermitteln**\\
 +  Parameter:  AL   01H
 +  Rückgabe:   BX   Spalte
 +              DX   Zeile
 +Anmerkung: Gibt die aktuelle Cursor-Position an.\\
 +\\
 +\\
 +**EDHO_REF       Bildschirm auffrischen**\\
 +  Parameter:  AL   02H
 +              BX   Cursor Location Override
 +              DX   Invalid Flag Override
 +  Rückgabe:   keine.
 +
 +Anmerkung: Cursor Override ist nur möglich, wenn sich der Cursor außerhalb des Scroll-Bereichs befindet, und erzwingt ein Auffrischen von der angebenen Stelle an:\\
 +          Nichts tun
 +          Auffrischen, unter Verwendung des oberen Scroll-Bereichs
 +          Auffrischen, unter Verwendung der Mitte
 +          Auffrischen, unter Verwendung des unteren Scroll-Bereichs
 +Invalid Flag Override besteht aus 5 Bits, die intern von der Textverarbeitung verwendet werden. Sie werden logisch "ODER" mit allen Bits verknüpft, um festzulegen welche Art der Auffrischung durchgeführt wird:
 +          Normalen Override
 +          aktuelle Zeile auffrischen
 +          aktuellen Absatz auffrischen
 +          aktuellen Offset auffrischen
 +          Prüfung innerhalb des Scroll-Bereichs
 +    10H     Rahmen/Rand auffrischen
 +    20H     Kompletter Neu-aufbau
 +\\
 +\\
 +**EDHO_LOC        Position des Zeichens am Cursor ermitteln**\\
 +  Parameter:   AL    03H
 +  Rückgabe:    ES:BX Adresse im Text
 +Anmerkung: Diese Funktion ermittelt die Adresse des Zeichens im Arbeitsspeicher.\\
 +\\
 +\\
 +**EDHO_INS        Zeichenkette einfügen**\\
 +  Parameter:   AL    04H
 +               ES:BX Adresse der einzufügenden ASCIIZ-Zeichenkette.
 +  Rückgabe:    AX    0 wenn erfolglos.
 +Anmerkung: Fügt Text an aktueller Cursor-Position ein, und setzt Cursor an Ende der Zeichenkette.
 +\\
 +\\
 +**EDHO_DEL        Zeichen löschen**\\
 +  Parameter:   AL    05H
 +               CX    Anzahl zu löschender Zeichen
 +               DX    0 verhindert, dass Zeichen in den Wiederherstellungspuffer geschrieben werden.
 +  Rückgabe:    AX    0 wenn erfolglos
 +Anmerkung: Eine negative Zahl in CX simuliert die Korrekturtaste, eine positive die Löschtaste.\\
 +\\
 +\\
 +**__Fn 08H__ Bildschirm speichern/wiederherstellen**\\
 +  Parameter:   AL    Unterfunktionen (0-3)
 +               BH    Bildschirmseite
 +               DS:SI Puffer zur speicherung des Bildschirms
 +               CX    untere rechte Ecke des zu speichernden Bildschirmbereichs (inklusive)
 +               DX    obere linke Ecke des zu speichernden Bildschirmbereichs (inklusive)
 +  Rückgabe:    keine.
 +Beschreibung: Diese Funktion speichert oder stellt den durch CX und DX definierten Bildschirmbereich in dem durch DS:DI adressierten Puffer wieder her. (Der Portfolio verwendet auf seinem Bildschirm keine Attribut-Angaben). Die Unterfunktionen sind wie folgt:
 +   00        Nur Zeichen speichern
 +   01        Zeichen und Attribute speichern
 +   02        Nur Zeichen Wiederherstellen
 +   03        Zeichen und Attribute wiederherstellen
 +\\
 +\\
 +**__Fn 09H__ Rahmen zeichnen**\\
 +  Parameter:   AL    Art (0=einfach, 1=doppelt)
 +               BH    Bildschirmseite
 +               CX    untere rechte Ecke des Rahmens
 +               DX    obere linke Ecke des Rahmens
 +  Rückgabe:    keine.
 +Beschreibung: Diese Funktion zeichnet einen Rahmen an der angegeben Position des Bildschirms.\\
 +\\
 +\\
 +**__Fn 0FH__ Menüs**\\
 +  Parameter:   AL    Art ((0=einfach, 1=doppelt)
 +               BH    Bildschirmseite
 +               CH    zuletzt verwendete obere Zeile
 +               CL    zuletzt gewählter Eintrag
 +               DX    obere linke Ecke des Menüs
 +               DS:SI Menütext (doppelt null-terminiert)
 +               ES:DI Standardtexte ((doppelt null-terminiert)
 +                     (Wenn DI FFFFH ist, dann gibt es keine Satndardtexte)
 +  Rückgabe:    AX    -1 wenn Esc gedrückt wurde
 +               oder
 +               AH    obere Zeile
 +               AL    gewählter Eintrag
 +Beschreibung:  Zeichnet ein Menü an der durch DX angegebenen Position. CH definiert welcher Eintrag an oberste Stelle im Menü stehen soll, CL definiert in welcher Menüzeile der Cursor stehen soll (in Bezug auf den Menütext, die Überschrift nicht mitgezählt). Die erste Zeile im Menü ist die Überschrift und hat keinen entsprechenden Eintrag in den Standardtexten. Wenn keine Überschrift benötigt wird, kann sie auf 0 (Zeichen 0) gesetzt werden. Wenn Bits 3..7 von AL 0 sind, dann wird keine Tiefenprüfung durchgeführt. Wenn ein einfacher Rahmen gwählt wurde, zeichnet die Funktion einen leeren Rahmen (ohne Überschrift) und kehrt zurück. Andernfalls wird das Menü dargestellt, und wenn eine Auswahl erfolgt ist wird der Menürahmen einfach und die Steuerung wird dem Aufrufer wieder übergeben.\\
 +\\
 +\\
 +**__Fn 10H__ Berechnung der Rahmenfläche**\\
 +  Parameter:    DX    linke obere Ecke des Rahmens
 +                DS:SI Menütext (doppelt null-terminiert)
 +                ES:DI Standardtexte (doppelt null-terminiert)
 +  Rückgabe:     AH    Anzahl Einträge (inkl. Überschrift)
 +                AL    Anzahl Einträge (inkl. Überschrift)
 +                BX    Anzahl Bytes (Attribute ausgenommen)
 +                CX    untere rechte Ecke des Rahmens
 +Beschreibung: Berechnet die Anzahl der benötigten Bytes um den Bildschirmbereich zu speichern. Beachten sie, dass davon ausgegangen wird, dass die maximale Breite die Menütextbreite + der längste Standardtext ist. Ferner wird DX bei diesem Aufruf vernichtet.\\
 +\\
 +\\
 +**__Fn 12H__ eingerahmte Meldungen**\\
 +  Parameter:    BH    Bildschirmseite
 +                DX    obere linke Ecke des Rahmens
 +                CS:SI Meldungstext (doppelt null-terminiert)
 +  Rückgabe:     keine.
 +Beschreibung: Zeigt den Text in CS:SI in einem doppelten Rahmen. Die erste Textzeile wird als Überschrift verwendet. Diese Funktion wird bei Informations-Meldungen wie laden, speichern u.s.w. verwendet.\\
 +\\
 +\\
 +**__Fn 14H__ eingerahmte Fehlermeldungen**\\
 +  Parameter:    BH    Bildschirmseite
 +                DX    obere linke Ecke des Rahmens
 +                CX    darf nicht Null sein
 +                CS:SI Fehlertext (doppelt null-terminiert)
 +  Rückgabe:     keine.
 +Beschreibung: Zeigt den Text in CS:SI in einem doppelten Rahmen. Es gibt keine Überschrift. Es wird ein Piepton ausgegeben und auf einen Tastendruck gewartet. Der Bildschirm wird dann wiederhergestellt und die Steuerung an den Aufrufer zurückgegeben.\\
 +\\
 +\\
 +
  
 ===== 3.11 IBM PC ENTWICKLUNGSSYSTEM ===== ===== 3.11 IBM PC ENTWICKLUNGSSYSTEM =====
 +Der Portfolio beinhaltet einige System-spezifische erweiterte BIOS Funktionen, auf die durch den Interrupt 61H zugegriffen wird, und eine Reihe von Funktionen für die Anwendungsumgebung auf die durch den Interrupt 60H zugegriffen wird. Wenn sie diese Funktionen, beim Entickweln auf einem standard IBM-PC, emulieren wollen, ist dies möglich indem sie die Programme I60.EXE und I61.EXE auf dem PC ausführen. Diese Programme bleiben als TSR installiert, was ihnen ermöglicht ganz einfach Benutzeranwendungen zu programmieren. Um eine Aufwärtskompatibilität zu gewährleisten (falls sie den Int 61H verwenden), stellen sie sicher, dass sie zuerst den Int 61H Fn 0H ausführen (siehe Abschnitt [[hardware:doku:techrefguide:abschnitt3#verfuegbare_funktionen|3.10.1]]). Alle dokumentierten Int 60H Funktionen werden von der IBM-Version unterstützt.\\
 +\\
 +Int 60H Funktionen die von der IBM-Version unterstützt werden:\\
 +   Fn Nr     Beschreibung                                                unterstützt
 +   
 +    0H       Initialisierung                                                 ja
 +    7H       Kreditkartenspeicher formatieren                               nein
 +    8H       Größe des internen Laufwerks ermitteln                          ja
 +    9H       internes Laufwerk formatieren                                  nein
 +    BH       CCM-Anwesenheit prüfen                                         nein
 +    DH       Bildschirmgröße setzten/ermitteln                               ja
 +    EH       Bildschirmtyp (txt, gfx) setzen/ermitteln                       ja
 +    FH       Cursormodus setzen/ermitteln                                   nein
 +   10H       Position des virtuellen Bildschirms setzen/ermitteln            ja
 +   11H       virtuellen Bildschirm bewegen                                  nein
 +   12H       Bildschirm auffrischen                                         nein
 +   15H       Klangerzeugung                                                  ja
 +   16H       Melodietöne                                                     ja
 +   17H       Wählfunktion                                                    ja
 +   18H       Stummschaltung                                                  ja
 +   19H       Parameter der seriellen Schnittstelle ermitteln                 ja
 +   1AH       Peripheral ID lesen                                            nein
 +   1BH       Peripheral ID setzen                                           nein
 +   1CH       Peripheral I/O Daten festlegen                                 nein
 +   1EH       Timertick-Geschwindigkeit setzen/ermitteln                      ja
 +   1FH       Bildschirmauffrischung durch Taste/Tick                      teilweise
 +   20H       Umleitung des Vektors von Interrupt 9H verhindern            teilweise
 +   24H       Status des ROM-Bereichs lesen/setzen                           nein
 +   26H       Status der Spannungsversorgung lesen/setzen                    nein
 +   28H       Spracheinstellung lesen/setzen                                  ja
 +   2CH       BIOS-Versionsnummer ermitteln                                   ja
 +   2DH       Gerät ausschalten                                              nein
 +   2EH       Statuszeile ein/ausblenden                                      ja
 +   30H       Dateiübertragungsfunktion                                       ja
 +\\
 +\\
hardware/doku/techrefguide/abschnitt3.1209596314.txt.gz · Zuletzt geändert: 16/02/2024 17:02 (Externe Bearbeitung)