hardware:doku:techrefguide:abschnitt3
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende Überarbeitung | ||
hardware:doku:techrefguide:abschnitt3 [01/05/2008 01:05] – internen Link korrigiert. uxt | hardware:doku:techrefguide:abschnitt3 [13/06/2020 18:06] (aktuell) – Beispiel zum DTMF karlmueller | ||
---|---|---|---|
Zeile 324: | Zeile 324: | ||
| | ||
| | ||
+ | \\ | ||
+ | Die Beschreibung zum DTMF ist nicht ganz vollständig, | ||
+ | ; 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 ' | ||
+ | | ||
+ | .code | ||
+ | mov ax, | ||
+ | mov ds, ax | ||
+ | | ||
+ | mov ah, 18h ; Mute States call | ||
+ | mov al, 08h ; Get DTMF duration | ||
+ | int 61h | ||
+ | | ||
+ | mov dtmf_dur, | ||
+ | ; from register | ||
+ | | ||
+ | mov ah, | ||
+ | mov al, | ||
+ | mov dx, | ||
+ | int 61h ; into register | ||
+ | | ||
+ | mov ah, 17h ; dial number to check tone | ||
+ | mov temp, @data ; duration | ||
+ | mov ds, | ||
+ | mov si, | ||
+ | mov cx, | ||
+ | int 61h | ||
+ | | ||
+ | mov dx, dtmf_dur | ||
+ | ; into register | ||
+ | mov ah, | ||
+ | mov al,09h | ||
+ | int 61h | ||
+ | | ||
+ | mov ah, 17h ; dial number to recheck | ||
+ | ; old tone duration | ||
+ | mov temp, @data | ||
+ | mov ds, | ||
+ | mov si, | ||
+ | mov cx, 8h | ||
+ | int 61h | ||
+ | | ||
+ | ;;;;;;;;;;;;;;;;; | ||
+ | ;terminate | ||
+ | | ||
+ | mov ah,4ch | ||
+ | int 21h | ||
+ | | ||
+ | end | ||
\\ | \\ | ||
\\ | \\ | ||
Zeile 522: | Zeile 584: | ||
**__Fn 2CH__ BIOS-Versionsnummer ermitteln**\\ | **__Fn 2CH__ BIOS-Versionsnummer ermitteln**\\ | ||
Parameter: AH 2CH | Parameter: AH 2CH | ||
- | Rückgabe: | + | Rückgabe: |
**Anmerkung: | **Anmerkung: | ||
+ | Das Technische Referenzhandbuch ist falsch. Es muss DX und nicht BX sein (Quelle: The Resource File Jun 1990, Seite 11. | ||
\\ | \\ | ||
\\ | \\ | ||
Zeile 750: | Zeile 813: | ||
| | ||
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 755: | 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 < | + | Eine RUN Datei kann vom Befehlsprozessor ausgeführt werden indem man RUN < |
\\ | \\ | ||
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 857: | 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, | ||
+ | \\ | ||
+ | Es folgt ein Beispiel einer Terminplaner-Datei: | ||
+ | |||
+ | | ||
+ | 14:14 Technische Referenz | ||
+ | 20:20 Nach Hause | ||
+ | |||
+ | Wenn ein Eintrag ein sich wiederholendes Ereignis ist, so wird der Uhrzeit ein Code-Zeichen vorangesetzt, | ||
+ | |||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | |||
+ | Wenn dem Eintrag eine Weckfunktion zugeordnet ist, so wird das Symbol" | ||
+ | \\ | ||
+ | Wenn ein Eintrag eine Weckfunktion hat und ein sich wiederholendes Ereignis ist, so geht der Wiederholungscode dem Weckzeichen voraus.\\ | ||
+ | \\ | ||
+ | Zum Beispiel: | ||
+ | 6/07/89 | ||
+ | | ||
+ | 7/07/89 | ||
+ | | ||
+ | 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:\\ | ||
+ | | ||
+ | | ||
+ | | ||
+ | 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, | ||
+ | \\ | ||
+ | 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: | ||
+ | < | ||
+ | < | ||
+ | \\ | ||
+ | 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), | ||
+ | \\ | ||
+ | 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: | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | |||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | |||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | |||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | |||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | |||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | |||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | |||
+ | 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: | ||
+ | | ||
+ | |||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | . | ||
+ | . | ||
+ | | ||
+ | | ||
+ | . | ||
+ | . | ||
+ | | ||
+ | | ||
+ | . | ||
+ | . | ||
+ | | ||
+ | . | ||
+ | | ||
+ | |||
+ | \\ | ||
+ | |||
+ | |||
==== 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, | ||
+ | \\ | ||
+ | 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: | ||
+ | \\ | ||
+ | \\ | ||
+ | **__Fn 01H__ Zeileneditor**\\ | ||
+ | Parameter: DS:SI Zeiger auf Steuerungsstruktur | ||
+ | Rückgabe: | ||
+ | Beschreibung: | ||
+ | und der Text kann länger sein als die Bildschirmbreite. Scroll-Ränder | ||
+ | | ||
+ | | ||
+ | ep_targ | ||
+ | | ||
+ | ep_pos | ||
+ | ep_max | ||
+ | ep_xpos | ||
+ | ep_ypos | ||
+ | ep_mode | ||
+ | ; | ||
+ | ; | ||
+ | ; | ||
+ | ep_hit | ||
+ | ;des Anwenders verarbeitet wird. Meistens benutzt um Zeichen vorzubearbeiten. | ||
+ | ep_tit | ||
+ | | ||
+ | ep_exit | ||
+ | | ||
+ | ep_fn dw ? ; | ||
+ | | ||
+ | ep_wid | ||
+ | ep_wind | ||
+ | ;auf 1 für einen doppelten Rahmen. | ||
+ | ep_res | ||
+ | | ||
+ | ep_udel | ||
+ | | ||
+ | ;Wenn nicht benötigt, verwenden sie eine Dummy-Routine (ret far). | ||
+ | ; | ||
+ | ;und 1 für rechts löschen. | ||
+ | ; | ||
+ | |||
+ | **Anmerkungen: | ||
+ | 1. Der Zielpuffer sollte mindestens " | ||
+ | 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 " | ||
+ | | ||
+ | 4. TASTENCODES: | ||
+ | Zum Beispiel " | ||
+ | | ||
+ | | ||
+ | | ||
+ | 5. Wenn sie einen Rahmen angeben, so werden beim Bearbeiten 2 Bytes von " | ||
+ | 6. Ähnlich, wenn sie eine Eingabeaufforderung angeben haben sie weniger Spielraum bei der | ||
+ | | ||
+ | 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: | ||
+ | wobei: | ||
+ | |||
+ | AL=0 keine Anwendung | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | |||
+ | Beschreibung: | ||
+ | \\ | ||
+ | \\ | ||
+ | **__Fn 03H__ reserviert für Sonderfunktionen**\\ | ||
+ | Es werden eine Reihe von " | ||
+ | \\ | ||
+ | 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 | ||
+ | Parameter: AL 00H | ||
+ | | ||
+ | | ||
+ | Rückgabe: | ||
+ | |||
+ | Anmerkung: Es gibt 6 Arten von Bewegung: | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | |||
+ | Wenn der Wiederholungszähler negativ ist, so ist die Bewegung rückwärts.\\ | ||
+ | \\ | ||
+ | \\ | ||
+ | **EDHO_GET | ||
+ | Parameter: | ||
+ | Rückgabe: | ||
+ | DX Zeile | ||
+ | Anmerkung: Gibt die aktuelle Cursor-Position an.\\ | ||
+ | \\ | ||
+ | \\ | ||
+ | **EDHO_REF | ||
+ | Parameter: | ||
+ | BX | ||
+ | DX | ||
+ | Rückgabe: | ||
+ | |||
+ | 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:\\ | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | Invalid Flag Override besteht aus 5 Bits, die intern von der Textverarbeitung verwendet werden. Sie werden logisch " | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | 10H | ||
+ | 20H | ||
+ | \\ | ||
+ | \\ | ||
+ | **EDHO_LOC | ||
+ | Parameter: | ||
+ | Rückgabe: | ||
+ | Anmerkung: Diese Funktion ermittelt die Adresse des Zeichens im Arbeitsspeicher.\\ | ||
+ | \\ | ||
+ | \\ | ||
+ | **EDHO_INS | ||
+ | Parameter: | ||
+ | ES:BX Adresse der einzufügenden ASCIIZ-Zeichenkette. | ||
+ | Rückgabe: | ||
+ | Anmerkung: Fügt Text an aktueller Cursor-Position ein, und setzt Cursor an Ende der Zeichenkette. | ||
+ | \\ | ||
+ | \\ | ||
+ | **EDHO_DEL | ||
+ | Parameter: | ||
+ | | ||
+ | | ||
+ | Rückgabe: | ||
+ | Anmerkung: Eine negative Zahl in CX simuliert die Korrekturtaste, | ||
+ | \\ | ||
+ | \\ | ||
+ | **__Fn 08H__ Bildschirm speichern/ | ||
+ | Parameter: | ||
+ | | ||
+ | DS:SI Puffer zur speicherung des Bildschirms | ||
+ | | ||
+ | | ||
+ | Rückgabe: | ||
+ | Beschreibung: | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | \\ | ||
+ | \\ | ||
+ | **__Fn 09H__ Rahmen zeichnen**\\ | ||
+ | Parameter: | ||
+ | | ||
+ | | ||
+ | | ||
+ | Rückgabe: | ||
+ | Beschreibung: | ||
+ | \\ | ||
+ | \\ | ||
+ | **__Fn 0FH__ Menüs**\\ | ||
+ | Parameter: | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | DS:SI Menütext (doppelt null-terminiert) | ||
+ | ES:DI Standardtexte ((doppelt null-terminiert) | ||
+ | (Wenn DI FFFFH ist, dann gibt es keine Satndardtexte) | ||
+ | Rückgabe: | ||
+ | oder | ||
+ | | ||
+ | | ||
+ | Beschreibung: | ||
+ | \\ | ||
+ | \\ | ||
+ | **__Fn 10H__ Berechnung der Rahmenfläche**\\ | ||
+ | Parameter: | ||
+ | DS:SI Menütext (doppelt null-terminiert) | ||
+ | ES:DI Standardtexte (doppelt null-terminiert) | ||
+ | Rückgabe: | ||
+ | AL Anzahl Einträge (inkl. Überschrift) | ||
+ | BX Anzahl Bytes (Attribute ausgenommen) | ||
+ | CX untere rechte Ecke des Rahmens | ||
+ | Beschreibung: | ||
+ | \\ | ||
+ | \\ | ||
+ | **__Fn 12H__ eingerahmte Meldungen**\\ | ||
+ | Parameter: | ||
+ | DX obere linke Ecke des Rahmens | ||
+ | CS:SI Meldungstext (doppelt null-terminiert) | ||
+ | Rückgabe: | ||
+ | Beschreibung: | ||
+ | \\ | ||
+ | \\ | ||
+ | **__Fn 14H__ eingerahmte Fehlermeldungen**\\ | ||
+ | Parameter: | ||
+ | DX obere linke Ecke des Rahmens | ||
+ | CX darf nicht Null sein | ||
+ | CS:SI Fehlertext (doppelt null-terminiert) | ||
+ | Rückgabe: | ||
+ | Beschreibung: | ||
+ | \\ | ||
+ | \\ | ||
+ | |||
===== 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, | ||
+ | \\ | ||
+ | Int 60H Funktionen die von der IBM-Version unterstützt werden:\\ | ||
+ | Fn Nr | ||
+ | |||
+ | 0H | ||
+ | 7H | ||
+ | 8H | ||
+ | 9H | ||
+ | BH | ||
+ | DH | ||
+ | EH | ||
+ | FH | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | \\ | ||
+ | \\ |
hardware/doku/techrefguide/abschnitt3.1209596556.txt.gz · Zuletzt geändert: 16/02/2024 17:02 (Externe Bearbeitung)