PofoWiki

Die ultimative Informationsquelle zum ATARI Portfolio

Benutzer-Werkzeuge

Webseiten-Werkzeuge


hardware:doku:techrefguide:abschnitt3

Dies ist eine alte Version des Dokuments!


ABSCHNITT 3: Software

3.1 ALLGEMEINE BESCHREIBUNG

3.1.1 Übersicht

Die Software des Atari Portfolio ist in einem ROM enthalten und wird vorwiegend vom ROM aus ausgeführt, wodurch der RAM-Bedarf minimiert wird. Diese Software bietet so viel PC-Kompatibilität wie möglich, innerhalb der Hardware-Möglichkeiten. (siehe Abschnitt 3.2 und 3.4 für den Vergleich von BIOS und DOS).

Diese Software enthält auch einige erweiterte Funktionen die es dem Portfio ermöglichen effizienter im mobilen Bereich benutzt zu werden als ein standard-PC. Die meisten dieser Software-Funktionen werden durch den Aufruf des Int 61H, die Atari Portfolio-spezifischen Funktionen, zur Verfügung gestellt (siehe Abschnitt 3.10.1).

Als Hilfe zur Entwicklung von Anwender-Software für den Atari Portfolio, die diese spezifischen Funktionen verwendet, gibt es ein TSR (terminate and stay resident) Emulationsprogramm für den IBM PC. Diese Programm emuliert die meisten dieser Funktionen (siehe Abschnitt 3.11).

3.1.2 Portfolio Programmierung

Der Portfolio entspricht IBM´s eigenen Programmierrichtlinien für PC-Kompatibilität; dennoch, diese sind weit aus flexibler als die Definition des Industrie-standards für „Clone“-PCs.

Die meisten „wohlverhaltenden“ PC-Programme laufen problemlos auf dem Portfolio, vorausgesetzt diese gehen nicht unterhalb des BIOS-Bereichs um direkt auf die Hardware zuzugreifen. Für die Entwicklung sind die Bildschirm- und Speichergröße von größtem Belang. Die verschiedenen Punkte die bei der Entwicklung von Programmen für den Portfolio zu berücksichtigen sind, sind folgende:

BILDSCHIRM

(siehe Abschnitt 3.7)

Der Portfolio hat einen Text-Bildschirm mit 40 Spalten und 8 Zeilen, der den Videospeicher an der selben Adresse, und den gleichen Zeichensatz verwendet wie der Monochrome Bildschirmadapter (MDA) des PC. Allerdings unterstützt der LCD-Controller keine Text-Attribute wie fett, unterstrichen oder invertiert, oder unterschiedliche Zeichengrößen. Wenn sie Portfolios Grafik-Fähigkeiten nutzen wollen, so verwenden sie den standard BIOS-Interrupt für Pixel setzen/löschen.

Der Portfolio bietet auch begrenzte Fähigkeiten auf der Ebene des BIOS-Interrupts für Bildpunkt (DOT) setzten/löschen. Es werden im Grafik-Modus weder ein großer virtueller Bildschirm (PC-Größe), noch das Ausgeben von Text-Zeichen unterstützt.

SPEICHER

(siehe Abschnitt 2.2 und Anhang D)

Der Portfolio hat ein internes Speicherlaufwerk C dessen Größe in 8KB-Schritten konfiguriert werden kann -mindestens 8KB. Bei einem Portfolio mit 128 KB bleiben höchstens 116 Kilobytes Arbeitsspeicher von denen 10 Kilobytes für das Betriebssystem und das BIOS benötigt werden. Deshalb wird empfohlen, dass Programme nicht mehr als 100 Kilobytes Arbeitsspeicher beanspruchen. Wenn sie die eingebauten „pop-up“-Anwendungen in dem externen Programm verwenden wollen, dann ermöglichen sie etwas freien Arbeitsspeicher (mindestetns 17 Kilobytes).

SPEICHERKARTEN

(siehe Abschnitt 3.6)

Diese Speicherkarten (CCMs) erscheinen einem DOS Programm wie standard Floppy-Disketten. Der Portfolio hält DOS ständig resident und muss deshalb nicht von einer Diskette gebootet werden. Wenn sie automatisch in ein Programm hineinbooten wollen so erzeugen sie eine AUTOEXEC.BAT auf der Speicherkarte um C:\AUTOEXEC.BAT zu umgehen.

SERIELL/RS232

(siehe Abschnitt 4.1)

Die einzige kompatible Möglichkeit auf den seriellen Port zuzugreifen ist über das BIOS. Die meisten handelsüblichen seriellen IBM PC Programme greifen allerdings direkt auf die Hardware zu. Diese Programme werden auf dem Portfolio nicht laufen.

TASTATUR

(siehe Abschnitt 3.2.1)

Der ATARI® Portfolio™ gewährleistet volle IBM PC Scancode-Kompatibilität, solange über das BIOS zugegriffen wird. Mit anderen Worten, es ist möglich jeden Tastendruck oder Tastenkombination zu generieren, die der IBM PC generieren kann (SHIFT, STRG, ALT, NUM PAD). Es ist auch möglich andere nicht-PC Kombinationen zu generieren die für Funktionen wie Kontrasteinstellung und Ausschalten nötig sind.

STROMVERBRAUCH

(siehe Abschnitt 3.8)

Für eine optimale Stromersparnis sollten Programme so konzipiert sein, dass sie die Tastatur nicht ständig pollen. An dessen Stelle sollten die „Warte auf Tastendruck“ Systemaufrufe verwendet werden.

ERWEITERT

(siehe Abschnitt 3.5 und 3.6)

Es gibt außerdem erweiterte Funktionen die es Anwenderprogrammen ermöglichen den Portfolio weit aus anspruchsvollere Aufgaben erfüllen zu lassen; das Starten von Programmen direkt von Speicherkarten, Erweiterungen mit eingebauter Software auf ROM, Sprache, Information und Zugang zum eingebauten Wählton.

3.1.3 Fehlerhandhabung

Starten von wohlverhaltenden, handelsüblichen standard PC-Programmen:

  • Stellen sie sicher, dass die Bildschirm-Einstellungen (siehe Benutzer Handbuch) für externe Programme auf PC statisch gestellt sind.
  • Wenn das Programm direkt in den Videospeicher schreibt, stellen sie sicher, dass der Bildaufbau (Auffrischen) auf Tastatur oder reguliert (schnell) eingestellt ist, je nachdem was besser ist.
  • Bestreben sie genügend Speicher zuzuordnen.

Obwohl viele beliebte Programme „wohlverhaltend“ sind, so gibt es andererseits viele Programme die direkt auf die Hardware zugreifen. Dies kann auf dem Portfolio zu Problemen führen, da die I/O Adressen und Interrupt-Strukturen anders sind. Die häufigsten dieser Inkompatibilitäten geschehen bei der Tastatur und Hardware Interrupts. Der Portfolio besitzt keinen Programmierbaren Interrupt Controller (PIC) oder speziellen Tastatur-Controller. Daher werden Programme die derartige Zugriffe machen, wie Basic oder XTALK, nicht richtig funktionieren. Der Portfolio verwendet auch einen anderen Timer-Tick als ein PC, was „unsaubere“ Programme wie SIDEKICK beinflusst. Ein weiterer Hardwarebereich der auf dem Portfolio anders ist, ist der Lautsprecher, welcher über das BIOS angesprochen werden sollte.

3.2 UNTERSCHIEDE ZWISCHEN PORTFOLIO BIOS UND IBM PC BIOS

Für den Zweck dieses Dokuments wird Portfolio BIOS als das Programm definiert, das zwischen DOS und der Hardware kommuniziert. (Siehe die in Abschnitt 1 empfohlenen Bücher für weitere Information über das standard PC BIOS.)

Es gibt einige wenige Unterschiede zwischen dem Portfolio BIOS und dem IBM PC BIOS. Diese sind hauptsächlich in Bereichen in denen die Hardwareunterschiede so groß sind, dass eine vollständige Kompatibilität nicht erreichbar ist. Zum Beispiel, bei den Videofunktionen (Int 10H) hat der Portfolio nur zwei Bildschirm-Modi: 80×25 Text und 240×64 Grafik.

3.2.1 Interrupt Unterschiede

Folgende Liste hebt die Hauptunterschiede zwischen dem Portfolio BIOS und dem IBM PC BIOS hervor:

Int 09H Tastatur: Die Portfolio-Tastatur liegt nicht an der selben I/O Adresse wie die des IBM PCs. Deshalb wird jedes Programm, das die Tastatur am I/O Port 60H braucht nicht richtig funktionieren. Int 9 wird ständig auf den ROM BIOS Int Handler umgeleitet weil jedes Programm, dass nicht speziell für den Portfolio geschrieben wurde und den Int 9 umleitet, fehlschlagen wird. Falls Int 9 umgeleitet werden muss, so sollte Int 61H Fn 20H aufgerufen werden (siehe Abschnitt 3.2).

Int 10H Videofunktionen: Funktion 00H, Modus 07 bis 0AH wird unterstützt, allerdings nur im Text oder Grafik-Modus. Funktion 01H; Cursor-Größe wird auf Block oder Unterstrich gesetzt (siehe Abschnitt 3.7)

Folgende Funktionen werden nicht unterstützt:

  • Funktion 04H, Lightpen-Position lesen
  • Funktion 0BH, Farb-Palette setzen
  • Funktion 10H, Palettenregister setzen
  • Funktion 11H, Zeichen generieren
  • Funktion 12H, Alternate auswählen


Int 13H Diskette: Der Portfolio hat modifizierte CCM/Disketten Funktionen von 0 bis 05H und 83H (siehe Abschnitt 3.3.2).

Int 15H Erweitert: keine erweiterten Funktionen vorhanden.

Int 16H Tastatur: Nur Funktionen 0,1,2 und 4 werden unterstützt.

Int 18H BASIC: nicht unterstützt.

Int 1AH Uhr: Nur Funktionen 0 bis 07H vorhanden.

Int 1CH Zähler: Wird in größeren Zeitabständen aufgerufen als beim IBM PC.

3.2.2 Portfolios BOOT Prozedur

Bei einem Kaltstart (Batterien entfernt, Kaltstart-Knopf gedrückt und Batterien wieder eingesetzt) führt das BIOS einen eingeschränkten Einschalt-Selbsttest (POST) durch um die Systemintegrität zu prüfen. Dies zerstört die Daten im Systemspeicher (sowohl den flüchtigen Programmspeicher als auch das interne Laufwerk C). Das Portfolio System fürt dann die BIOS und DOS Initialisierung durch bevor zum Kommando-Prozessor gesprungen wird. Dies wird das Gerät immer zurücksetzen, es sei denn es liegt ein Hardware-Fehler vor.

Bei einem Hardware-Warmstart (Warmstartknopf gedrückt oder Batteriewechsel ohne die Kaltstarttaste zu drücken) führt der Portfolio die BIOS und DOS Initialisierung durch bevor zum Kommando-Prozessor gesprungen wird.

Bei einem Software-Warmstart (gleichzeitiges Drücken von Strg_Alt_Entf auf der Tastatur) ist die Reihenfolge des Ablaufs ähnlich wie bei einem Hardware-Warmstart. Der Unterschied zwischen den beiden ist, dass ein Hardware-Warmstart auch den ASIC und den Prozessor zurücksetzt. Dies kann erforderlich sein, wenn die Interrupts unterbunden wurden und der Prozessor daran gehindert wird Tastatureingaben des Benutzers zu erkennen.

3.3 SYSTEMSPEZIFISCHES BIOS

3.3.1 Int 61H - Erweiterte BIOS Funktionen

FunktionBeschreibungFunktionBeschreibung
0H Initialisierung 1AH Schnittstellen-ID lesen
7H Speicherkarte (CCM) formatieren 1BH Schnittstellen-ID setzen
8H Größe des internen Laufwerks ermitteln 1CH E/A Tabellen für Schnittsellen definieren
9H internes Laufwerk formatieren 1EH Taktgeschw. des Zählers lesen/setzen
BH Anwesenheit einer Speicherkarte feststellen 1FH Taktgeschw. der Bildschirmauffrischung
DH Bildschirmgröße ermitteln 20H Umleitung des Int 9 unterbinden
EH Bildschirm-Modus lesen/setzen 22H PSP einer Anwendung ermitteln
FH Cursor-Modus lesen/setzen 23H Bildschirm-Modus absolutes lesen/setzen
10H virtuelle Bildschirmposition lesen/setzen 24H Status des ROM-Bereichs lesen/setzen
11H virtuelle Bildschirmposition verschieben 26H Status der Spannungsversorgung
12H Bildschirm auffrischen 28H Spracheinstellung lesen/setzen
15H Klangerzeugung 2CH BIOS-Versionsnummer ermitteln
16H Melodie-Töne 2DH Gerät ausschalten
17H Nummer wählen 2EH Statuszeile ein/ausblenden
18H Stummschaltstatus 2FH ATARI-Taste abfragen
19H Parameter der seriellen Schnittstelle lesen 30H Dateiübertragung via Smart-Kabel

Anmerkung: Es gibt weitere reservierte Int 61H Funktionen die intern vom Betriebssystem benutzt werden. Es wird empfohlen diese nicht in Anwenderprogrammen aufzurufen, da diese in zukünftigen Software-Versionen geändert oder gelöscht werden könnten.


Fn 00H Funktionen initialisieren (siehe Abschnitt 3.10)

Parameter: AH	  00H
Rückgabe: keine

Anmerkung: Diese Funktion sollte von Anwendersoftware die auf diese Funktion zugreifen will einmalig als Bestandteil der Initialisierung aufgerufen werden.


Fn 07H Speicherkarte formatieren (siehe Abschnitt 2.3, 3.6, 3.10.2)

Parameter: AH   07H
           AL   Laufwerksnummer (0 oder 1)
Rückgabe:  CF   gesetzt falls Fehler beim Formatieren
           AH   Fehlernummer (siehe Int 13H)

Anmerkung: Laufwerksnummer 0 wählt das physikalische Laufwerk A, und Laufwerksnummer 1 wählt das physikalische Laufwerk B. Diese Funktion sollte nicht verwendet werden um das interne Laufwerk (Nummer 2) zu formatieren.


Fn 08H Größe des internen Laufwerks ermitteln (siehe Abschnitt 3.10.2)

Parameter: AH   08H
Rückgabe:  AX   Segmentadresse des Laufwerks
           BX   Größe des Laufwerks in  Kilobytes



Fn 09H Internes Laufwerk formatieren (siehe Abschnitt 3.10.2)

Parameter: AH   09H
           BX   Größe des Laufwerks in Kilobytes
Rückgabe:  Wenn CF=1
           BX   maximal mögliche Größe

Anmerkung: Das System wird bei Erfolg neu gestartet. Alle Dateien auf Laufwerk C gehen verloren.


Fn 0BH feststellen, ob Speicherkarte vorhanden und gültig (siehe Abschnitt 2.3, 3.10.2, 3.6)

Parameter: AH   0BH
           AL   Laufwerksnummer (0 oder 1)
Rückgabe:  CF=0 Karte anwesend und gültig
           Wenn CF=1
           AH   Fehlernummer (siehe Int 13H)

Anmerkung: Dies kann verwendet werden um festzustellen ob sich eine gültige CCM im angegebenen Laufwerk befindet. Laufwerksnummer 0 wählt Laufwerk A und Laufwerksnummer 1 wählt das physikalische Laufwerk B.


Fn 0DH Bildschirmgröße ermitteln (siehe Abschnitt 2.8, 3.7, 2.1.4)

Parameter: AH   0DH
Rückgabe:  AX   physikalische Bildschirmgröße
           DX   logische Bildschirmgröße
Anmerkung: AH/DH   Zeilennummer bei 0 beginnend
           AL/DL   Spaltennummer bei 0 beginnend



Fn 0EH Bildschirm-Modus lesen/setzen (siehe Abschnitt 2.1.4, 2.8, 3.7)

Parameter: AH   0EH
           AL=0 Modus lesen
           AL=1 Modus setzen
           DL   neuer Modus
Rückgabe:  Wenn AL=0
           DL   Modus
           Wenn AL=1
           DL   alter Modus

Anmerkung: Der Modus wird durch das setzen folgender Mode-Bits in DL verändert:

Alle null  (00H)    80x25 Modus
Bit 0      (01H)    40x8  Modus
Bit 1      (02H)    Dynamischer Modus
Bit 7      (80H)    Grafik Modus

Diese Bits sind gegenseitig ausschließend. Wenn beim wechseln auf den 40×8 Modus die Cursorposition oder der Ursprung des virtuellen Bildschirm außerhalb des aktuellen Bildschirmbereichs liegen, so wird der Ursprung des virtuellen Bildschirms auf (0,0) gesetzt, der Bildschirm gelöscht und die Cursorposition auf Anfang gesetzt.

Fn 0EH liest oder setzt den Bildschirm-Modus egal in welchen Zustand sich das Gerät befindet (intern oder extern) und dies nur innerhalb des Programms. Für eine dauerhaftere Beienflussung sollte Fn 23H verwendet werden.


Fn 0FH Cursor-Modus lesen/setzen (siehe Abschnitt 2.1.4, 2.8, 3.7)

Parameter: AH   0FH
           AL=0 Modus lesen
           AL=1 Modus setzen
           BL   neuer Modus
           AL=2 Modus erzwingen
Rückgabe:  Wenn AL=0
           BL   Cursor-Modus
           Wenn AL>0
           BL   alter Modus

Anmerkung: Der Cursor-Modus ist wie folgt:

0   Cursor aus
1   Unterstrich
2   Block

Der erzwungene Modus setzt automatisch die Cursor-Größe des BIOS um den Zustand der numerischen Tastatur wiederzuspiegeln.


Fn 10H virtuelle Bildschirmposition lesen/setzen (siehe Abschnitt 2.1.4, 2.8, 3.7)

Parameter: AH   10H
           AL=0 Position lesen
           AL=1 Position setzen
           Wenn AL=1
           DH   Zeilennummer
           DL   Spaltennummer
Rückgabe:  Wenn AL=0
           DH   Zeilennummer
           DL   Spaltennummer

Anmerkung: Die virtuelle Bildschirmposition ist die obere linke Ecke des 40×8-Fensters auf dem logischen Bildschirm.


Fn 11H Position des virtuellen Bildschirms verschieben (siehe Abschnitt 2.1.4 und 3.7)

Parameter: AH   11H
           AL   Anzahl der Zeilen um die der Cursor verschoben wird.
           DL   Richtung der Verschiebung
                1      aufwärts
                2      abwärts
                3      links
                4      rechts
Rückgabe:  keine.

Anmerkung: Dies verschiebt den Ursprung des virtuellen Bildschirms innerhalb der Scroll-Ränder. Es funktioniert nur im statischen oder im dynamischen Bildschirm-Modus und hat eine ähnliche Wirkung wie das drücken der Alt_Cursor-Tasten.


Fn 12H Bildschirm auffrischen (siehe Abschnitt 2.1.4, 2.8 und 3.7)

Parameter: AH   12H
Rückgabe:  keine.

Anmerkung: Diese Funktion kopiert den Inhalt des Videospeichers in den LCD-Controller und ist etwas schneller als der Aufruf von Int 10H Funktion 0.


Fn 15H Klangerzeugung (siehe Abschnitt 2.1.5)

Parameter: AH   15H
           AL   Unterfunktion
                0    Tasten-Klick
                1    Piepton
                2    Wecker
Rückgabe:  keine.



Fn 16H Melodie Tongenerator (siehe Abschnitt 2.1.5)

Parameter: AH   16H
           CX   Länge des Tons in Zehntel-Sekunden-Schritten
           DL   Tone-Code (siehe unten)
           30H        D#5      622,3 Hz
           31H        E5       659,3 Hz
           32H        F5       698,5 Hz
           33H        F#5      740,0 Hz
           34H        G5       784,0 Hz
           35H        G#5      830,6 Hz
           36H        A5       880,0 Hz
           37H        A#5      932,3 Hz
           38H        B5       987,8 Hz
           39H        C6      1046,5 Hz
           3AH        C#6     1108,7 Hz
           29H        D6      1174,7 Hz
           3BH        D#6     1244,5 Hz
           3CH        E6      1318,5 Hz
           3DH        F6      1396,9 Hz
           0EH        F#6     1480,0 Hz
           3EH        G6      1568,0 Hz
           2CH        G#6     1661,2 Hz
           3FH        A6      1760,0 Hz
           04H        A#6     1864,7 Hz
           05H        B6      1975,5 Hz
           25H        C7      2093,0 Hz
           2FH        C#7     2217,5 Hz
           06H        D7      2349,3 Hz
           07H        D#7     2489,0 Hz
Rückgabe: keine.



Fn 17H Nummer wählen (siehe Abschnitt 2.1.5)

Parameter: AH     17H
           DS:SI  Zeiger auf Zeichenkette
           cx     Länge der Zeichenkette
Rückgabe:  keine.

Anmerkung: Die Zeichenkette muss im ASCII-Format sein. Gültige Zeichen sind: 0 1 2 3 4 5 6 7 8 9 A B C D * #. Buchstaben müssen groß geschrieben sein.


Fn 18H Stummschaltstatus (siehe Abschnitt 2.1.5)

Parameter: AH   18H
           AL   00      Stummschaltstatus lesen
                01      Stummschaltstatus setzen
                02      Tastatur-Klick-Status lesen
                03      Tastatur-Klick-Status setzen
                04      Piepton Status lesen
                05      Piepton Status setzen
                06      Wecker Status lesen
                07      Wecker Status setzen
                08      DTMF-Länge lesen
                09      DTMF-Länge setzen
           Wenn AL= 1,3,5,7 oder 9
           DL   0       aus
                1       ein
Rückgabe:  Wenn AL= 0,2,4,6 oder 8
           DL   0       aus
           DL   1       ein



Fn19H Parameter der seriellen Schnittstelle lesen (siehe Abschnitt 2.7, 4.1 und 3.5)

Parameter: AH   19H
           DX   Nummer des seriellen Ports
Rückgabe:  Wenn AH=0    Composite Parameter in AL
           Wenn AH<>0   Fehler

Anmerkung: Diese Funktion liefert Composite Parameter, so wie sie auch von Int 14H Funktion 0 (initialisieren) verwendet werden.


Fn 1AH ID-Byte einer Schnittstelle lesen (siehe 2.7 und 3.5)

Parameter: AH   1AH
Rückgabe:  AH   ID-Byte der Schnittstelle
           AL   0 wenn keine Schnittstelle angeschlossen ist.

Anmerkung: Diese Funktion liefert den ID-Code der aktuellen terminierenden Schnittstelle (siehe Fn 1BH).


Fn 1BH ID-Byte einer Schnittstelle setzen (siehe 2.7 und 3.5)

Parameter: AH   1BH
           AL=0 serielles ID setzen
           AL=1 paralleles ID setzen
           DL   aktuelles ID
Rückgabe:  keine.

Anmerkung: Es kann Schnittstellen geben, die Schaltungen enthalten die sich ähnlich verhalten wie die serielle oder parallele Schnittstelle. Damit diese Schnittstellen auf die entsprechenden BIOS-Funktionen zugreifen können, müssen sie sich als software-kompatibel zu erkennen geben. DL sollte das ID-Byte der Schnittstelle enthalten (siehe Fn 1AH).


Fn 1CH E/A Tabellen für Schnittsellen definieren (siehe Abschnitt 2.7, 3.5 und 4.1)

Parameter: AH   1CH
           AL=0 Daten schreiben
           AL=1 Daten lesen
           BH   Eintragsnummer in der Tabelle
           Wenn AL=0
           BL   Datenbyte
           DX   I/O Adresse
Rückgabe:  Wenn AL=1
           BL   Datenbyte
           DX   I/O Adresse

Anmerkung: Diese Funktion wird verwendet um Daten Ein/Ausgabe-Tabellen für Schnittstellen voreinzustellen die ein Daten-Byte mit einer I/O Adresse verknüpfen. Funktion 0 wird die voreingestellten Daten an die entsprechenden I/O Adressen ausgeben. Beim Einschalten werden die Tabelleneinträge nach nicht-Null-Werten in I/O Adressen durchkämmt und die zugeordneten Daten werden übermittelt. Eine typische Anwendung hierfür ist das wiederherstellen von Interrupt-Nummern nach dem Einschalten. Die ersten vier von maximal 10 Tabelleneinträgen sind reserviert.


Fn 1EH Taktgeschwindigkeit des Zählers lesen/setzen (siehe Abschnitt 2.4 und 3.8)

Parameter: AH   1EH
           AL   Unterfunktionen
                0           Geschwindigkeit lesen
                1           Geschwindigkeit setzen
           Wenn AL=1
           BX   Zähler Taktgeschwindigkeit
                0           1 Tick alle 128 Sekunden
                1           1 Tick pro Sekunde
Rückgabe:  Wenn AL=0
           BX   Zähler Taktgeschwindigkeit
                0           1 Tick alle 128 Sekunden
                1           1 Tick pro Sekunde

Anmerkung: 1 Tick pro Sekunde verbraucht erheblich mehr Strom.


Fn 1FH Taktgeschwindigkeit der Bildschirmauffrischung (siehe Abschnitt 2.8, 3.7 und 3.8)

Parameter: AH   1FH
           AL=0 Auffrisch-Status lesen
           AL=1 Auffrisch.Status setzen
           Wenn Al=1
           DX   neuer Status
Rückgabe:  Wenn AL=0
           DX   aktueller Status
           Wenn AL=1
           DX   vorheriger Status

Anmerkung:

           DH   Bei NMI auffrischen
           DL   Bei Tastendruck auffrischen
           DH/DL=0  nein
           DH/DL=1  ja

Wenn Bit 7 gesetzt ist bleibt der Status unverändert. Ein Tick pro Sekunde verbraucht erheblich mehr Strom. Wenn der Portfolio beispielsweise so eingestellt ist, dass der Bildschirm im Zähler-Takt auffrischt, so wird der Prozessor im „Run-Mode“ sehr viel Zeit damit verbringen. Dieser Tick bestimmt auch wie oft der Portfolio aus dem ausgeschaltetem Zustand erwacht um die Uhrzeit zu aktualisieren und die Weckfunktion zu prüfen. Dies kann die Lebensdauer der Batterien eines ausgeschalteten Portfolios erheblich verkürzen.


Fn 20H Umleitung des Int 9 unterbinden (siehe Abschnitt 3.2)

Parameter: AH   20H
           AL=0 auf Umleitung prüfen
           AL=1 umleiten/aufheben
           Wenn AL=1
           DL=0 Umleitung unterbinden
           DL=1 Umleitung erlauben
Rückgabe:  Wenn AL=0
           DL=0 Umleitung unterbunden
           DL=1 Umleitung freigegeben

Anmerkung: Dies wird benutzt um den Int 9H automatisch auf das BIOS umzuleiten. Dies hindert Anwendungssoftware daran einen eigenen Int 9H aufzubauen. Beachten sie, dass die I/O Adresse der Tastatur beim Portfolio anders ist als die der IBM kompatiblen. Diese Funktion wird beim Neustart automatisch aufgerufen.


Fn 22H PSP einer Anwendung ermitteln

Parameter: AH   22H
           AL   Unterfunktion
           0    Modus lesen
           1    Modus setzen
           Wenn AL=1
           DS:00  Zeiger auf Struktur in DS:00
Rückgabe:  Wenn AL=0
           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 D).


Fn 23H Bildschirm-Modus absolutes lesen/setzen

Parameter: AH   23H
           AL=0 Modus lesen
           AL=1 Modus setzen
Rückgabe:  DH   interner Modus
           DL   externer Modus
           Wenn AL=0
           DX   Modus
           Wenn AL=1
           DX   vorheriger Modus

Anmerkung: Fn 23H speichert eine Kopie des Modus um eine permanentere Änderung durchzuführen. Nach Fn 23H sollte Fn 0EH ausgeführt werden


Fn 24H Status des ROM-Bereichs lesen/setzen (siehe 2.2.4)

Parameter: AH   24H
           AL=0 ROM-Status lesen
           AL=1 ROM-Status setzen
           Wenn AL=1
           DL   neuer ROM-Status
           DH   neuer CCM-Status
Rückgabe:  Wenn AL=0
           DL   aktueller ROM-Status
           DH   aktueller CCM-Status
           Wenn AL=0
           DL   vorheriger ROM-Status
           DH   vorheriger CCM-Status

Anmerkung:
Der ROM-Status in DL ist wie folgt:

           DL=0 normal, Anwendungs-ROM
           DL=1 CCM-Laufwerk A
           DL=2 CCM-Laufwerk B
           DL=3 Erweiterungs-ROM

Der CCM-Status in DH ist wie folgt:

           DL=0 CCM-Laufwerke gesperrt
           DL=1 CCM-Laufwerk A permanent bereit
           DL=2 CCM-Laufwerk B permanent bereit
           CF=0 kein Fehler
           CF=1 ungültige Option oder Fehler.

Anmerkung: Diese Funktion sollte mit Vorsicht behandelt werden, da sie entweder eine Speicherkarte oder ein Erweiterungs-ROM in den Adress-Bereich zwischen C000:0 und DFFF:F einblenden kann. Dieser Bereich wird normalerweise von dem internen Anwendungs-ROM verwendet. Der Sinn dieser Funktion liegt darin erfahrenen Anwendern einen direkten Zugriff auf erweiterungs-ROMs und Speicherkarten zu ermöglichen.


Fn 26H Status der Spannungsversorgung lesen/setzen (siehe Abschnitt 2.1.10, 2.5 und 3.6)

Parameter: AH   26H
           AL=0 Status der Spannungsversorgung lesen
           AL=1 Status der Spannungsversorgung setzen
           Wenn AL=1
           DL   neuer Status
Rückgabe:  Wenn AL=0
           DL   aktueller Status
           Wenn AL=1
           DL   vorheriger Status

Anmerkung:

           DL=0 normal, Warnung und Abschalten wenn Batterien leer.
           DL=1 verhindern, Warnung aber kein Abschalten.
           DL=2 Abschalten verhindern und keine Warnung.

Diese Funktion wird verwendet um zu verhindern, dass sich der Portfolio bei schwach werdenden Batterien automatisch abschaltet (siehe Abschnitt 3.8). Der Einsatz wird nicht empfohlen, es sei ein Abschalten wäre für die Anwendung oder eine Erweiterung kritisch.


Fn 28H Spracheinstellung lesen/setzen

Parameter: AH   28H
           AL=0 Sprache lesen
           AL=1 Sprache setzen
           AL=3 Zeiger auf Sprachentabelle
           Wenn AL=1
           DX   neue Sprachen
Rückgabe:  Wenn AL=0
           DX   aktuelle Sprache
           Wenn AL=1
           DX   vorherige Sprache
           wenn AL=3
           ES:CX  Zeiger auf Tatstaturteabelle
           ES:DX  Zeiger auf Sprachentabelle

Anmerkung:

           FürAL=0 und AL=1
           DH = Textsprache
           DL = Tastatursprache

Diese Sprach-Codes dienen als Index in eine der Sprachen des entsprechenden ROMs. Aktuell gibt es folgende Sprachversionen:

  Englisch/Französisch/Deutsch (EFG)
  Englisch/Italienisch/Spanisch (EIS)
  Englisch/Schwedisch/Dänisch (ESD)
  Englisch/Schweizer-Französisch/Shweizer-Deutsch (ESS)

Diese Funktionen gibt keine Auskunft über die vorhandene Sprachgruppe, sondern nur über den Index innerhalb dieser Gruppe. Für voll multilinguale Software, verwenden sie diese Indexe für die Tabellen die von Funktion 3 geliefert werden.

  Für AL=1

Wenn bit 7 von DH oder DL wärend des Aufrufs gesetzt ist, so wird der ursprüngliche Wert des entsprechenden Parameters nicht verändert.

  Für AL=3
  ES:CX  Zeiger auf Tastaturtabelle
  ES:DX  Zeiger auf Sprachtabelle

Die Tabellen bestehen jeweils aus einem Count-Byte, gefolgt von einer Reihe von Codes für die residenten Sprachen:

     Englisch             1             Schwedisch             6
     Französisch          2             Dänisch                7
     Deutsch              3             Schweizer Französisch  8
     Spanisch             4             Schweizer Deutsch      9
     Italienisch          5



Fn 2CH BIOS-Versionsnummer ermitteln

Parameter: AH    2CH
Rückgabe:  DS:BX 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.


Fn 2DH Gerät ausschalten (siehe Abschnitt 2.1.10, 2.5 und 3.8)

Parameter: AH   2DH
Rückgabe:  keine.

Anmerkung: Dies ist als wenn man OFF in die Kommandozeile schreibt.


Fn 2EH Statuszeile ein/ausblenden

Parameter: AH   2EH
           AL=0 Statuszeile ausblenden
           AL=1 Statuszeile einblenden
           DH   Zeilennummer
           DL   Spaltennumer
Rückgabe:  keine.

Anmerkung: Dies ist als wenn man die Feststelltaste drückt.


Fn 2FH Atari-Taste abfragen

Parameter: AH   2FH
Rückgabe:  AL   20H wenn Taste gedrückt wurde



Fn 30H Dateiübertragungsfunktion (siehe Abschnitt 4.2)

Parameter: AH      30H
           AL      0        Block übertragen
           AL      1        Block empfangen
           AL      2        Ports öffnen              
           AL      3        Ports schließen
           AL      4        Warte 500 ms
           DS:DX   Anfang des Datenpuffers
           Wenn AL=0
           CX      Anzahl der zu sendenden Bytes
           Wenn AL=1
           CX      Maximale Puffergröße
Rückgabe:  Wenn AL=1
           CX      Anzahl empfangener Bytes
           DL      Fehlernummer
                   0        kein Fehler
                   1        Puffer zu klein
                   2        Time-Out bei Übertragung
                   3        Checksummenfehler
                   4        ungültige Unterfunktion
                   5        Schnittstelle nicht angeschlossen

Anmerkung: Diese Funktion wird von der eingebauten Dateiübertragungs-Software benutzt.


3.3.2 Disketten Funktionen

Portfolios CCM/Disk Funktionen werden auf dem BIOS-Level durch den Int 13H zur Verfügung gestellt.

Es gibt sechs standard Disk Unterfunktionen plus eine Sonderfunktion. Diese sind wie folgt:

 0H		CCM/Disk-System zurücksetzen
 1H		CCM/Disk-Status ermitteln
 2H		CCM/Disk-Sektoren lesen
 3H		CCM/Disk-Sektoren lesen
 4H		CCM/Disk-Sektoren prüfen
 5H		CCM/Disk-Spur formatieren
83H		CCM/Disk Boot-Sektor schreiben

Funktionen 0 bis 4 sind den Funktionen des standard IBM PC BIOS sehr ähnlich. Sie können auf die drei intern unterstützten Laufwerke A, B und C (jeweils als Laufwerk 0, 1 und 2 bezeichnet) zugreifen.

Int 13H verwendet den BIOS Parameter Block (BPB) auf dem Boot-Sektor (erster Sektor) des Laufwerks um die Laufwerkseigenschaften zu ermitteln. Wärend der Formatierung ist es erforderlich den Format-BPB zu verwenden, er wird von der Funktion 83H bereitgestellt. Diese Funktion wird an Stelle der Funktion 5H verwendet um die erste Spur einer CCM/Disk zu formatieren.

Die Parameter für die Funktion 5H sind anders als die für einen normalen PC, wie unten beschrieben:

 Int 13H Fn 5H
 Parameter:    AH     5H
               DL     Laufwerks-Nummer
               DH     Seite/Kopf
               CH     Spur-Nummer
 Rückgabe:     CF=1   Fehlernummer in AH

Anmerkung: Schreibt ein definiertes Byte auf eine Spur des CCM. Das Byte wird in der Disk Basis Tabelle definiert.

Die Disk Basis Tabelle ist der eines IBM-PC sehr ähnlich. Auf die Tabelle für beide CCMs zeigt der Int 1EH, und auf die Tabelle für das interne Laufwerk zeigt Int 41H. Das Format beider Disk Basis Tabellen ist wie folgt:

Offset 03H Byte-pro-Sektor-Code (0=80H, 1=100H, 2=200H) Offset 0AH Format Daten-Bytes (normalerweise F6H)

Wärend der Formatierung mit dem Int 61H (siehe Abschnitt 3.10.1) wird die Sektorgröße dynamisch an die Disk-Größe angepasst:

  Disk-Größe               Sektorgröße
  0 bis <=32 Kilobyte      80H/128 Bytes pro Sektor
  >32 bis <=64 Kilobyte    100H/256 Bytes pro Sektor
  >64 Kilobyte             200H/512 Bytes pro Sektor

Dies stellt sicher, dass eine geringe Disk-Größe eine vernünftige Anzahl an Sektoren enthält. Da das Portfolio-DOS jedem Daten-Cluster einen Sektor zuweist, elaubt dies, dass eine 32K-CCM die gleiche Anzahl an kleinen Dateien wie eine 128K-CCM.

Es gibt mehrere Int 61H-Funktionen die erweiterte Disk-Funktionen zur Verfügung stellen (siehe Abschnitt 3.10.1):

  Int 61H Fn 7H    eine CCM formatieren
  
  Int 61H Fn 8H    Größe des internen Laufwerks ermitteln
  
  Int 61H Fn 9H    internes Laufwerk formatieren
  
  Int 61H Fn 0BH   feststellen, ob eine gültige CCM vorhanden ist

Anmerkung:* Eine CCM kann auch eine BIOS-Erweiterung enthalten, die die den Betrieb der CCM nicht beeinflusst, die aber das Betriebssystem oder die Ein- und Ausschalt-Sequenz verändert (siehe Abschnitt 3.5)

3.4 Unterschiede Zwischen Portfolio DOS und MS-DOS

3.5 Gerätetreiber und Peripheriesoftware

3.5.1 Gerätetreiber

3.5.2 Gestaltung von Erweiterungen

3.5.3 ROM-Erweiterungen

3.6 Speicherkarten

3.6.1 Format

3.6.2 Autoboot Mechanismus

3.6.3 Run

3.7 Bildschirmsteuerung

3.8 Power Management

3.9 Besondere Dateiformate

3.9.1 Speicherungsformat des Zeitplaners

3.9.2 Formate der Systemdateien

3.9.2.1 CLIPBORD.DAT

3.9.2.2 UNDELETE.DAT

3.9.2.3 PERMDATA.DAT

3.10 Funktionen der Anwendungsumgebung

3.10.1 Verfügbare Funktionen

3.10.2 Dataillierte Beschreibung der Funktionen

3.11 IBM PC ENTWICKLUNGSSYSTEM

hardware/doku/techrefguide/abschnitt3.1197055731.txt.gz · Zuletzt geändert: 16/02/2024 17:02 (Externe Bearbeitung)