Home

8086 Assembler:
Funktionsindex für INT 21H


Zurück zur Assemblerauswahlseite

Funktionsindex

Die Einzelbeschreibungen enthalten als Warnhinweis das Zeichen !.

Alle Zahlenangaben in den Einzelbeschreibungen sind hexadezimal. MS-DOS-Versionen vor 3 werden nicht mitbeschrieben, obwohl einige Funktionen sich dort anders verhalten.

Zahlenangaben in den Einzelbeschreibungen sind hexadezimal.

Programmbeendigung: Funktionen, mit denen ein Programm beendet oder resident installiert werden kann.

00 Terminate Program (CP/M)
31 Keep Process
4C End Process (UNIX), empfohlene Methode

Zeicheneingabe: Zum Einlesen einzelner Zeichen oder Zeichenketten.

01 Read Keyboard and Echo (CP/M)
03 Auxiliary Input (CP/M)
06 Direct Console I/O (CP/M)
07 Direct Console Input
08 Read Keyboard
0A Buffered Keyboard Input (CP/M)
0B Check keyboard Status (CP/M)
OC Flush Keyboard, read Keyboard

Zeichenausgabe Zur Ausgabe einzelner Zeichen oder Zeichenketten.

02 Display Character (CP/M)
04 Auxiliary Output (CP/M)
05 Print Character (CP/M)
06 Direct Console Input
09 Display String (CP/M)

Disk-Transfer-Adresse, nur für CP/M kompatible Diskfunktionen

1A Set DTA-Address (CP/M)
2F Get DTA-Address (CP/M)

Disk-Kontrolle, haben mit Laufwerken, aber nicht mit Dateiverwaltung zu tun.

0D Reset Disk (CP/M)
0E Select Disk (CP/M)
19 Get Current Disk (CP/M)
1B Get Default Drive Data
1C Get Drive Data
2E Set / Reset Verify Flag
36 Get Disk Free Space
54 Get Verify State

Datei-Operationen

0F Open File (CP/M)
10 Close File (CP/M)
11 Search For First Entry (CP/M)
12 Search For Next Entry (CP/M)
13 Delete File (CP/M)
16 Create File (CP/M)
17 Rename File (CP/M)
23 Get File Size (CP/M)
3C Create Handle
3D Open Handle
3E Close Handle
41 Delete Directory Entry (Delete File)
43 Get/ Set File Attributes
45 Duplicate File Handle
46 Force Duplicate File Handle
4E Find First File
4F Find Next File
56 Datei umbenennen
57 Get/ Set Date/ Time of File
5A Create Temporary File
5B Create New File

Satz-Operationen, beziehen sich auf die Verarbeitung in einer Datei

14 Sequential Read (CP/M)
15 Sequential Write (CP/M) 21 Random Read (CP/M)
22 Random Write (CP/M)
24 Set relative Record (CP/M)
27 Random Block Read (CP/M)
28 Random Block Write (CP/M)
3F Read Handle
40 Write Handle
42 Move File Pointer/ Get File Size
5C Lock/ Unlock

Directory-Operationen

39 Create Directory
3A Remove Directory
3B Change Current Directory
47 Get Current Directory

Systemdatum und -zeit

2A Get Date
2B Set Date
2C Get Time
2D Set Time

Dynamische Speicherverwaltung, anfordern und Freigeben von Hauptspeicher

48 Allocate Memory - Speicherplatz reservieren
49 Free Allocated Memory
4A Set Block (Ändert Größe eines Speicherblocks)
58 Get/ Set allocation Strategy

Sonstige Systemfunktionen

25 Set Interrupt Vector
26 Create New PSP
29 Parse File Name
30 Get MS-DOS Version Number
33 Control C-Check
35 Get Interrupt Vector
38 Get/Set Country Data
4B Load and Execute Program / Load Overlay
4D Get Return Code Child Process
59 Get Extended Error Information
62 Get PSP

Reservierte Funktionen (hier nicht weiter erwähnt)

Reserviert sind die Funktionen 18, 1D, 1E, 20, 5D, 60, und 61

Undokumentiert sind die Funktionen

  • 1F Get default Disk Parameter Block (vergl Funktion 32)
    Liefert den Disk-Parameter-Block des aktuellen Laufwerkes.
  • 32 Get Disk Parameter Block
    Liefert den Disk-Parameter-Block von einem beliebigen Laufwerk.
  • 34 Get Disk Busy Flag
    Liefert die Adresse eines Bytes, in dem DOS hinterlegt, ob ein Funktionsaufruf im Moment erlaubt ist oder nicht.
    Aufruf: AH=34
    Return: ES_BX->Zeiger auf Flag
    Flag: 0->erlaubt, <>0 ->verboten
  • 37 Get/ Set Switch Character
    dient u.a. dem Lesen bzw. Setzen des Zeichens, mit denen Schalter (z.B. DIR /P) eingeleitet werden.
  • 50 Set Current PSP (vergl. Funktion 4B)
    Setzt den angegebenen PSP als den gerade aktiven PSP, wie er mit Funktion 51 abgefragt werden kann.
  • 51 Get Current PSP (vergl. Funktion 62)
    Liefert das Segment des PSP vom gerade aktiven Programm.
  • 52 Get DOS Info Block
    Liefert die Adresse auf eine DOS-Interne Tabelle (DIB), in der sich eine Reihe von Zeigern auf Datenstrukturen des DOS befinden.
  • 53 Set DBP from BPM
    Erzeugt einen Disk-Parameter-Block aus einem Boot-Parameter-Block
  • 55 Create New Process (vergl. Funktion 4B)
    Erzeugt einen PSP für einen neuen Prozess



Auswahlliste

FU00H

Terminate Program (CP/M)

Beendet Programm und gibt seinen Speicherbereich wieder an DOS zurück.

! Geänderte Dateilängen werden nicht im Directory vermerkt.

Aufruf: AH=00
        CS=Segment PSP
Return: Int-Vektoren 22H bis 24H werden aus PSP ab Offset 0AH restauriert.
Alle Dateipuffer werden auf Disk geschrieben.
Fehler: keine
Auswahlliste

FU01H

Read Keyboard and Echo (CP/M)

Liest ein Zeichen von Standard_Input.

Falls bei der Eingabe eine Funktionstaste betätigt wurde (AL=0) muss die Funktion ein zweites Mal aufgerufen werden, um den erweiterten Tastencode zu ermitteln.

Programmabbruch durch ctrl-C oder ctrl-Break möglich. Zeichen werden angezeigt. bei Eingabe von Tastatur wird auf ein Zeichen gewartet, falls der Tastaturpuffer leer ist.

Aufruf: AH=01
Return: AL=Zeichen
Fehler: keine
Auswahlliste

FU02H

Display Character (CP/M)

Schreibt ein Zeichen nach Standard_Output.

Programmabbruch durch ctrl-C oder ctrl-Break möglich

Aufruf: AH=02
        DL=Zeichen
Return: nichts
Fehler: keine
Auswahlliste

FU03H

Auxiliary Input (CP/M)

Liest ein Zeichen von Standard_Auxiliary.

Programmabbruch durch ctrl-C oder ctrl-Break möglich, bei Eingabe von Tastatur wird auf ein Zeichen gewartet, falls der Tastaturpuffer leer ist.

Aufruf: AH=03
Return: AL=Zeichen
Fehler: keine
Auswahlliste

FU04H

Auxiliary Output (CP/M)

Schreibt ein Zeichen nach Standard_Auxiliary.

Programmabbruch durch ctrl-C oder ctrl-Break möglich.

Aufruf: AH=04
        DL=Zeichen
Return: nichts
Fehler: keine
Auswahlliste

FU05H

Print Character (CP/M)

Schreibt ein Zeichen nach Standard_List_Device

Programmabbruch durch ctrl-C oder ctrl-Break möglich.

Aufruf: AH=05
        DL=Zeichen
Return: nichts
Fehler: keine
Auswahlliste

FU06H

Direct Console I/O (CP/M)

1. Liest ein Zeichen von Standard-Input (kein Echo, kein Warten auf Eingabe). Falls bei der Eingabe eine Funktionstaste betätigt wurde (AL=0) muss die Funktion ein zweites Mal aufgerufen werden, um den erweiterten Tastencode zu ermitteln.

2. Schreibt ein Zeichen nach Standard_Output.

Aufruf: AH=06
        DL=0FF als Flag für Input, 00..0FE= auszugebendes Zeichen
Return: bei Zeroflag=0: AL=Zeichen
        bei Zeroflag=1: kein Zeichen
Fehler: keine
Auswahlliste

FU07H

Direct Console Input

Liest ein Zeichen von Standard-Input (kein Echo) Falls bei der Eingabe eine Funktionstaste betätigt wurde (AL=0) muss die Funktion erneut aufgerufen werden, um den erweiterten Tastencode zu ermitteln.

Bei Eingabe von Tastatur wird auf ein Zeichen gewartet, falls der Tastaturpuffer leer ist.

Aufruf: AH=07
Return: AL=Zeichen
Fehler: keine
Auswahlliste

FU08H

Read Keyboard

Liest ein Zeichen von Standard-Input (kein Echo) Falls bei der Eingabe eine Funktionstaste betätigt wurde (AL=0) muss die Funktion ein zweites mal aufgerufen werden, um den erweiterten Tastencode zu ermitteln.

Programmabbruch durch ctrl-C oder ctrl-Break möglich. Bei Eingabe von Tastatur wird auf ein Zeichen gewartet, falls der Tastaturpuffer leer ist.

Aufruf: AH=08
Return: AL=Zeichen
Fehler: keine
Auswahlliste

FU09H

Display String (CP/M)

Schreibt eine Zeichenkette, die mit $ beendet sein muss, nach Standard_Ausgabe. Beispiel siehe FU0AH.

Aufruf: AH=09
  DS:DX=Beginn Zeichenkette
Return: nichts
Fehler: keine
Auswahlliste

FU0AH

Buffered Keyboard Input (CP/M)

Liest eine Zeichenkette von Standard_Input in einen Puffer. Bei Eingabe von Tastatur ist Edieren möglich. Programmabbruch durch ctrl-C oder ctrl-Break möglich. Zeichen werden angezeigt. Bei Eingabe von Tastatur wird auf ein Zeichen gewartet, falls der Tastaturpuffer leer ist.

Aufruf: AH=0A
   DS:DX=Anfangsadresse Puffer
   MAX=Pufferlänge: inkl. des CRs von der Eingabe!

Struktur des Puffers:
MAX db BufLen
IST db ?
BUF db BuFLen dup (?)

Return: IST=Anzahl gelesener Zeichen
        BUF=gelesene Zeichen ohne das CR der Eingabe.
        Das CR ist jedoch im Puffer mit enthalten.
        Wird nur CR betätigt, ist BUF=0, im
        folgenden Byte des Puffers steht CR.
Fehler: keine

Beispiel zu FU09H und FU10H:
CODE    SEGMENT
        ASSUME CS:CODE,DS:CODE
        ORG 100h
START:  JMP MARKE
TEXT1   DB  'WIE HEISST DU ?',13,10,'$'
TEXT2   DB  'GUTEN TAG, ','$'
EINGABE DB  10            ;Pufferlänge inkl.CR
        DB  0             ;Anzahl eingegebener Zeichen
        DB  10 DUP (24h)  ;maximal sind 9 Zeichen + CR eingebbar
        DB  '$'           ;für Ausgabe mit INT21 Funktion 9
MARKE:
        MOV DX,OFFSET TEXT1  ;Lade Adresse von TEXT1
        MOV AH,09            ;Lade Funktionsnummer
        INT 21h              ;Ausgabe von TEXT1
        MOV DX,OFFSET EINGABE  ;Lade Adresse d. Eingabepuffers
        MOV AH,0Ah             ;Lade Funktionsnummer
        INT 21h                ;Eingabe eines Textes
        MOV DX,OFFSET TEXT2    ;Lade Adresse von TEXT2
        MOV AH,09              ;Lade Funktionsnummer
        INT 21h                ;Ausgabe von TEXT2
        MOV DX,OFFSET EINGABE+2 ;Lade Adresse d. Eingabepuffers
        MOV AH,09               ;Lade Funktionsnummer
        INT 21h                 ;Ausgabe des Namens
        MOV AH,02               ;Ausgabe eines Linefeeds
        MOV DL,0Ah              ;ASCII-Code 0A hex
        INT 21h
        MOV AH,4Ch              ;Beende das Programm
        INT 21h
CODE    ENDS
        END START
Auswahlliste

FU0BH

Check Keyboard Status (CP/M)

Testet, ob ein Zeichen zum Einlesen von Standard_Input ansteht. Programmabbruch durch CTRL_C oder CTRL_Break möglich,

Aufruf: AH=0B
Return: AL=00: kein Zeichen da
  AL=FF: Zeichen vorhanden
Fehler: keine
Auswahlliste

FU0CH

Flush Keyboard, read Keyboard

Löscht den Puffer von Standard_Input und ruft dann die Eingabefunktion von AL auf. AL=0 löscht nur den Tastaturpuffer.

Aufruf: AH=0C
  AL=0, 1, 6, 7, 8 oder 0A. Es handelt sich um zugelassene
     Tastaturfunktionen, die das gleiche leisten wie
     INT 21h-Funktionen mit der gleichen Nummer.

bei AL=0A DS:DX=Puffer, vergl. FU0AH
! andere Werte führen sofort zum Ende der Funktion.

Return: Ergebnis der entsprechenden Funktion.
Fehler: keine
Auswahlliste

FU0DH

Reset Disk (CP/M)

Schreibt alle Puffer auf Disk

Aufruf: AH=0D
Return: nichts
Fehler: keine
Auswahlliste

FU0EH

Select Disk (CP/M)

Setzt angegebenes Laufwerk als aktuelles (=default) Laufwerk

Aufruf: AH=0E
  DL=Laufwerk (A=0, 1=B, max 19H=Z)
Return: AL=Anzahl logischer Laufwerke, Wert von LASTDRIVE
Fehler: keine
Auswahlliste

FU0FH

Open File (CP/M)

Öffnet eine Datei zur Bearbeitung mit FCB.

! überholte Funktion, neue Funktion:FU3DH.

!CURREC und RECLEN werden nicht initialisiert. RECLEN wird auf 128 gesetzt.

Aufruf: AH=0F
        DS:DX=ungeöffneter FCB
Return: AL=0
  CURBLK=0,RECLEN=80H,FSIZE,FDATE,FTIME aus Directory
Fehler: AL=FF
Auswahlliste

FU10H

Close File (CP/M)

Schließt eine Datei nach Bearbeitung mit FCB.

!überholte Funktion, neue Funktion FU3EH.

Aufruf: AH=10
  DS:DX=geöffneter FCB
Return: AL=0
  Datei geschlossen,FCB aktualisiert
Fehler: AL=FF=Eintrag nicht gefunden
Auswahlliste

FU11H

Search For First Entry (CP/M)

! überholte Funktion, neu FU4EH.

Sucht Directory-Eintrag auf angegebenem Laufwerk. Bei Verwendung des erweiterten FCBs kann man nach Dateien mit bestimmten Attribut suchen.

! DTA vorher auf Zielpuffer setzen (Funktion 1A); die Funktion legt das Suchergebnis dort als ungeöffneten FCB gleichen Typs ab.

Aufruf: AH=11
        DS:DX=ungeöffneter FCB
        ? in Dateinamen und Erweiterung erlaubt
Return: AL=0
        Rückgabe an momentaner DTA:
        wenn normaler FCB:
             DTA+0: Laufwerk (1=A)
             DTA+1:Dir-Eintrag 32 Bytes

             wenn erweiterter FCB:
             DTA+0: FF
             DTA+1: 5 Bytes 0
             DTA+7: Suchattribut
             DTA+8: Laufwerk (1=A)
             DTA+9: Dir-Eintrag 32 Bytes
Fehler: AL=FF=Eintrag nicht gefunden
Auswahlliste

FU12H

Search For Next Entry (CP/M)

! überholte Funktion, neu FU4FH.

Sucht Directory-Eintrag nach Funktion 11 und legt ihn in der gleichen Art im momentanen DTA ab.

! Der Such-FCB darf zwischen beiden Funktionsaufrufen nicht verändert werden. Vergl FU11H für Details.
Auswahlliste

FU13H

Delete File (CP/M)

! überholte Funktion, neu FU41H.

Löscht alle gesuchten Dateien, die auf die Namensvorgabe passen.

Aufruf: AH=13
        DS:DX=ungeöffneter FCB
        ? in Dateinamen und Erweiterung erlaubt
Return: AL=0: eine oder mehrere Dateien gelöscht
Fehler: AL=FF: keine übereinstimmende Datei gefunden
Auswahlliste

FU14H

Sequential Read (CP/M)

Liest den aktuellen Satz gemäß CURBLK und CURREC aus der angegebene Datei und legt ihn an der DTA ab. Positioniert danach CURBLK und CURREC auf den nächsten Satz. Ein unvollständiger Satz (EOF) wird mit 00h auf die volle Länge aufgefüllt.

!überholte Funktion, neu: FU3FH.

Aufruf: AH=14
        DS:DX=geöffneter FCB
        evtl zusätzlich im FCB:
        -CURBLK nach OPEN auf 0
        -RECLEN nach OPEN auf 80h
        -CURREC nach OPEN undefiniert
Return: AL=0: Satz nach DTA gelesen
Fehler: AL= 1 Ende der Datei
  AL= 2 DTA zu klein
  AL= 3 Teil des Datensatzes gelesen
Auswahlliste

FU15H

Sequential Write (CP/M)

Schreibt den aktuellen Satz gemäß CURBLK und CURREC von der DTA in die angegebene Datei (gepuffert). Positioniert danach CURBLK und CURREC auf den nächsten Satz.

! überholte Funktion, neu FU40H.

Aufruf: AH=15
  DS:DX=geöffneter FCB
  evtl zusätzlich im FCB:
  -CURBLK nach OPEN auf 0
  -RECLEN nach OPEN auf 80h
  -CURREC nach OPEN undefiniert
Return: AL=0: Satz von DTA geschrieben
Fehler: AL= 1 Diskette voll
  AL= 2 DTA zu klein
Auswahlliste

FU16H

Create File (CP/M)

! überholte Funktion, neue Funktionen FU3CH, FU5AH und FU5BH.

Erzeugt eine leere Datei. Attributvergabe mit erweitertem FCB möglich.

Aufruf: AH=16
  DS:DX=ungeöffneter FCB
Return: AL=0: Datei mit Länge 0 erzeugt
Fehler: AL=FF: keine leeren Einträge verfügbar
Auswahlliste

FU17H

Rename File (CP/M)

! überholte Funktion, neu FU56H.

Gibt Datei den neuen Namen, falls dieser noch frei ist. Hidden-,System-, SubDir- und Volume-Einträge können nur mit erweitertem FCB umbenannt werden.

Aufruf: AH=17
  DS:DX=spezieller FCB, siehe unter Stichwort=FCB
Return: AL=0: Datei hat einen neuen Namen
Fehler: AL=FF: keine übereinstimmende Datei gefunden
Auswahlliste

FU19H

Get Current Disk (CP/M)

Liefert die Nummer des aktuellen Laufwerks.

Aufruf: AH=19
Return: AL=Laufwerk (A=0, 1=B, max 19H=Z)
Fehler: keine
Auswahlliste

FU1AH

Set DTA-Address (CP/M)

Gibt DOS die Adresse bekannt, ab der der Puffer für den Datenaustausch von/zur Disk liegt. Default: PSP:80H

Aufruf: AH=1A
        DS:DX=DTA-Adresse
Return: nichts
Fehler: keine
Auswahlliste

FU1BH

Get Default Drive Data

Liefert einige Daten über das aktuelle Laufwerk

! überholt, statt dessen: FU36H.

Aufruf: AH=1B
Return: AL=Sektoren pro Cluster
  CX=Bytes pro sektor
        DX=Anzahl Cluster
        DS:DX Zeiger auf FAT-ID-Byte
Fehler: keine
Auswahlliste

FU1CH

Get Drive Data

Liefert einige Daten über das angegebene Laufwerk.

! überholt, statt dessen: FU36H.

Aufruf: AH=1C
        DL=Laufwerk (0=aktuell, 1=A, usw.)
Return: falls AL<>FF:
        AL=Sektoren pro Cluster
        CX=Bytes pro Sektor
        DX=Anzahl Cluster
        DS:DX Zeiger auf FAT-ID-Byte
Fehler: AL=FF
</xmp>
Auswahlliste

FU1FH

undokumentiert

FU21H

Random Read (CP/M)
Liest wahlfrei einen Satz gemäß RELREC an die DTA. Positioniert nicht auf den nächsten Satz. Ein unvollständiger Satz (EOF) wird mit 00h auf die volle Länge aufgefüllt. Die Datensatznr. wird normalerweise mit FU24H gesetzt.
! überholte Funktion, neu: FU3FH. <pre> Aufruf: AH=21 DS:DX=geöffneter FCB zusätzlich im FCB: RELREC: Nr. des Satzes mit RECLEN Bytes (0=erster Satz) Return: AL=0: RECLEN Bytes nach DTA gelesen CURBLK und CURREC auf Wert gemäß RELREC gesetzt. Fehler: AL= 1 Ende der Datei AL= 2 DTA zu klein AL= 3 Teil des Datensatzes gelesen Auswahlliste

FU22H

Random Write (CP/M)

Schreibt wahlfrei einen Satz gemäß RELREC von der DTA. Positioniert nicht auf den nächsten Satz. Ein unvollständiger Satz (EOF) wird mit 00h auf die volle Länge aufgefüllt. Die Datensatznr. wird normalerweise mit FU24H gesetzt.

! überholte Funktion, neu: FU40H.

Aufruf: AH=22
        DS:DX=geöffneter FCB
        zusätzlich im FCB:
        RELREC: Nr. des Satzes mit RECLEN Bytes (0=erster Satz)
Return: AL=0: RECLEN Bytes von DTA geschrieben
        CURBLK und CUUREC auf Wert gemäß RELREC gesetzt.
Fehler: AL= 1 Diskette voll
  AL= 2 DTA zu klein
Auswahlliste

FU23H

Get File Size (CP/M)

! überholt, statt dessen: FU42H.

Liefert die Anzahl der Sätze mit der Länge RECLEN in der angegebenen Datei.

! rundet auf den nächsten Integer-Wert auf, wenn ein unvollständiger Datensatz gefunden wird.

Trick: Um die Dateigröße in Bytes zu bestimmen, beim ungeöffneten FCB das Feld RECLEN auf 1 setzen.

Aufruf: AH=23
        DS:DX=ungeöffneter FCB, zusätzlich RECLEN einfüllen
Return: falls AL=0:  Ergebnis in RELREC (4 bytes)
Fehler: AL=FF: Datei nicht gefunden
Auswahlliste

FU24H

Set relative Record (CP/M)

Legt Datensatznummer der Datei gem. FCB fest. Die Felder CURBLK, CURREC und RECLEN im FCB müssen vor Aufruf der Funktion entsprechend gefüllt werden.

! überholte Funktion, neu: FU42H.

Aufruf: AH=24
        DS:DX=geöffneter FCB
        zusätzlich im FCB:
        CURBLK, CURREC und RECLEN
Return: AL=0,
RELREC auf Position gem. CURBLK und CURREC gesetzt.
Fehler: keine (hier gibt es Widerspüche in den unterschiedlichen
        Beschreibungen)
Auswahlliste

FU25H

Set Interrupt Vector

Setzt Interrupt Vektor auf einen neuen Wert.

Aufruf: AH=25
        AL=Interruptnummer
        DS:DX=neue Ausführungsadresse
Return: nichts
Fehler: keine
Auswahlliste

FU26H

Create New PSP

Kopiert den aktuellen PSP in den angegebenen Speicherbereich und bereitet ihn für den weiteren Gebrauch durch ein Programm vor.

! veraltet! Besser FU48H.

Aufruf: AH=26
        DX=Segment für neuen PSP
Return: nichts
Fehler: keine
Auswahlliste

FU27H

Random Block Read (CP/M)

Liest wahlfrei mehrere Sätze aus der angegebenen Datei ab RELREC an die DTA.

! überholte Funktion, neu: FU3FH.

Unvollständiger Satz (EOF) wird mit NUL aufgefüllt. Nach dem Lesen wird auf das erste Byte hinter dem zuletzt gelesenen Satz positioniert.

Aufruf: AH=27
        DS:DX=geöffneter FCB
        cx=Anzahl zu lesende Sätze
        zusätzlich im FCB:
        RELREC: Nr. des 1.zu lesenden Satzes
           mit RECLEN Bytes (0=erster Satz)
Return: AL=0: RECLEN * CX Bytes nach DTA gelesen
        CURBLK, CURREC und RELREC auf nächsten zu lesenden Satz gesetzt.
Fehler: AL= 1 Ende der Datei
  AL= 2 DTA zu klein
  AL= 3 Teil des Datensatzes gelesen
Auswahlliste

FU28H

Random Block Write (CP/M)

Schreibt wahlfrei mehrere Sätze in die angegebenen Datei ab RELREC aus der DTA.

! überholte Funktion, neu: FU40H.

Bei=CX=0 wird nichts geschrieben, sondern es wird die Dateigröße auf den Wert RELREC*RECLEN gekürzt. Nach dem Schreiben wird auf das erste Byte hinter dem zuletzt geschriebenen Satz positioniert.

Aufruf: AH=28
        DS:DX=geöffneter FCB
        CX=Anzahl zu schreibender Sätze
        zusätzlich im FCB:
        RELREC: Nr. des 1.zu schreibenden Satzes mit RECLEN
Return: AL=0: RECLEN * CX Bytes von DTA in Datei geschrieben
        CURBLK, CURREC und RELREC auf nächsten
           zu schreibenden Satz gesetzt.
Fehler: AL= 1 Diskette voll
  AL= 2 DTA zu klein
Auswahlliste

FU29H

Parse File Name

Durchsucht einen String nach einer gültigen Dateispezifikation bestehen aus Laufwerk:Name.Erweiterung und übernimmt diese in den ungeöffneten FCB an der DTA.

Aufruf: AH=29
        AL=Parsing Flags
        DS:SI=String
        ES:DI=ungeöffneter FCB
Return:
        AL= 0 - FCB erzeugt, kein ? im String gefunden
            1 - FCB erzeugt, ? im String gefunden
           FF - falsches Laufwerk im String
   ES:DI+1= Beginn Dateiname (Space, wenn fehlerhaft)
Fehler: keine (es sei denn, man interpretiert AL=FFh als Fehler)
Auswahlliste

FU2AH

Get Date

Liefert Systemdatum

Aufruf: AH=2A
Return: CX=Jahr (1980 bis 2099)
        DH=Monat (1 bis 12)
        DL=Tag (1 bis 31)
        AL=Wochentag (0=Sonntag)
Fehler: keine
Auswahlliste

FU2BH

Set Date

Setzt Systemdatum

Aufruf: AH=2B
        CX=Jahr (1980 bis 2099)
        DH=Monat (1 bis 12)
        DL=Tag (1 bis 31)
Return: AL=0 -Datum gültig und gesetzt
Fehler: AL=FF
Auswahlliste

FU2CH

Get Time

Liefert die aktuelle Uhrzeit

Aufruf: AH=2C
Return: CH=Stunden (0 bis 23)
        CL=Minuten (0 bis 59)
        DH=Sekunden (0 bis 59)
        DL=hundertstel Sekunden (0 bis 99)
Fehler: keine
Auswahlliste

FU2DH

Set Time

Setzt die aktuelle Systemzeit

Aufruf: AH=2D
        CH=Stunden (0 bis 23)
        CL=Minuten (0 bis 59)
        DH=Sekunden (0 bis 59)
        DL=hundertstel Sekunden (0 bis 99)
Return: AL=0 Zeit gültig und gesetzt
Fehler: AL=FF
Auswahlliste

FU2EH

Set / Reset Verify Flag

Schaltet Verify ON / OFF

Aufruf: AH=2E
        AL=00 - Verify OFF, 01 - Verify ON
Return: nichts
Fehler: keine
Auswahlliste

FU2FH

Get DTA-Address (CP/M)

Liefert die momentane Disk Transfer Adresse

Aufruf: AH=2F
Return: ES:BX=DTA-Adresse
Fehler: keine
Auswahlliste

FU30H

Get MS-DOS Version Number

Ermittelt die MS-DOS-Versionsnummer

Aufruf: AH=30
Return: AH=Revisonsnummer (Unterversion)
  AL=Versionsnummer
Fehler: keine
In Programmen, die die Versionsnummer abfragen, steht häufig dieser HEX-Code:
b4 30 cd 21
Auswahlliste

FU31H

Keep Process

Beendet ein Programm und hält DX Paragraphen seines Speicherbereiches resident. ! Offene Dateien bleiben geöffnet. Setzt den Return-Code fest, der beim Aufruf in AL angegeben wird. Nach Konvention bedeutet 00=kein Fehler.

Aufruf: AH=31
  AL=Return-Code
        DX=residenter Speicher ab Blockbeginn in Paragraphen
        CS=Segment PSP
Return: Die Funktion gibt keine Argumente zurück.
Auswahlliste

FU32H

undokumentiert
Auswahlliste

FU33H

Control C-Check

Dient dem Setzen bzw.Lesen des Control-C Status (=Break on/off)

Aufruf: AH=33
        AL=0 - Get
        AL=1 - Set, dann DL=0 - off, DL=1 -on
Return: wenn AL nicht auf FF: DL=Status
Fehler: AL=FF
Auswahlliste

FU34H

undokumentiert
Auswahlliste

FU35H

Get Interrupt Vector

Liest einen Interrupt- Vektor

Aufruf: AH=35
        AL=Interrupt-Nummer
Return: ES:BX=Interrupt-Vektor
Fehler: keine
Auswahlliste

FU36H

Get Disk Free Space

Liefert die freie und gesamte Kapazität des angegebenen Laufwerkes.

Freie Kapazität: AX*BX*CX Bytes
Gesamtkapazität: AX*DX*CX Bytes
Aufruf: AH=36
        DL=Laufwerk (0=aktuell, 1=A, usw.)
Return: falls AX ungleich FFFF:
        AX=Sektoren pro Cluster
        BX=freie Cluster
        CX=Bytes pro Sektor
        DX=Cluster pro Laufwerk
Fehler: AX=FFFF
Auswahlliste

FU37H

undokumentiert
Auswahlliste

FU38H

Get/ Set Country Data

Abfrage / Setzen der landesspezifischen Darstellung von Datum, Zeit, Zahlenkolonnen, usw.

Aufruf: AH=38
        AL=Country-Code
   oder wenn AL=FF:
        BX=Country-Code
        DX=FFFF - Set, sonst Get
        DS:DX=Zielpuffer (34 Bytes)
Return: wenn CF=0 und bei Get: Puffer gefüllt
Fehler: AX=2
Auswahlliste

FU39H

Create Directory

Richtet ein neues Unterverzeichnis ein.

Aufruf: AH=39
        DS:DX=Beginn Pfad
Return: falls CF=0: fehlerfrei
Fehler: AX=3, 5
Auswahlliste

FU3AH

Remove Directory

Entfernt ein leeres Unterverzeichnis.

Aufruf: AH=3A
        DS:DX=Beginn Pfad
Return: falls CF=0: fehlerfrei
Fehler: AX=3, 5, 16
Auswahlliste

FU3BH

Change Current Directory

Wechselt in das angegebene Directory.

Aufruf: AH=3B
        DS:DX=Beginn Pfad
Return: falls CF=0: fehlerfrei
Fehler: AX=3
Auswahlliste

FU3CH

Create Handle

Erzeugt eine leere Datei gemäß Pfad und öffnet sie zum Lesen und Schreiben. ! Eine bereits vorhanden Datei gleichen Namens wird gelöscht. Vergleiche FU5BH

Aufruf: AH=3C
        CX=Attribut [08 (Volume) und 10h(SubDir) nicht möglich]
        DS:DX=Beginn Pfad
Return: falls CF=0: AX=Handle
Fehler: AX=3, 4, 5
Auswahlliste

FU3DH

Open Handle

Eröffnet eine Datei und positioniert auf Dateianfang.

Aufruf: AH=3D
        AL=Zugriffscode 0=lesen, 1=schreiben, 2=lesen u.schreiben
        DS:DX=Beginn Pfad
Return: falls CF=0: AX=Handle
Fehler: AX=1, 2, 3, 4, 5, C
Auswahlliste

FU3EH

Close Handle

Schließt eine offene Datei inkl. Schreiben des Puffers und Anpassen der Directory.

Aufruf: AH=3E
        BX=Handle
Return: falls CF=0: O.K.
Fehler: AX=6
Auswahlliste

FU3FH

Read Handle

Liest von Datei oder Gerät in einen Puffer.

Aufruf: AH=3F
        BX=Handle
        DS:DX=Zielpuffer
        CX=Anzahl zu lesende Bytes
Return: falls CF=0: AX=Anzahl gelesener Bytes (0=EOF)
Fehler: AX= 5, 6
Auswahlliste

FU40H

Write Handle

Schreibt Puffer in Datei oder auf Gerät.

Aufruf: AH=40
        BX=Handle
        DS:DX=Quellpuffer
        CX=Anzahl zu schreibender Bytes
Return: falls CF=0: AX=Anzahl geschriebener Bytes (0=Disk full)
Fehler: AX= 5, 6
Auswahlliste

FU41H

Delete Directory Entry

Löscht die angegebene Datei. ! Read-only-Dateien vorher mit FU43H anpassen.

Aufruf: AH=41
        DS:DX=Beginn Pfad (keine Wildcards erlaubt!)
Return: falls CF=0: O.K.
Fehler: AX=2, 6
Auswahlliste

FU42H

Move File Pointer/ Get File Size

Positioniert in der Datei für nächste Schreib- oder Leseoperation.

Zur Bestimmung der Dateigröße: Aufruf mit CX:DX=0:0, AL=2

Eine Positionierung mit CX:DX=0:0, AL=0 ist offenbar nicht möglich, das Kleinste ist CX:DX=0:1, AL=0

Aufruf: AH=42
        AL=Position bezogen auf:
        0=DX:CX
        1=aktuelle Dateiposition plus DX:CX
        2=Dateiende plus CX:DX
        BX=Handle
        CX=High Word Position
        DX=Low Word Position
Return: falls CF=0: fehlerfrei
        DX=High Word Position
        AX=Low Word Position
Fehler: AX=1, 6
Auswahlliste

FU43H

Get/ Set File Attributes

Liest oder setzt das Attribut der angegeben Datei. Das Attributbyte ist bei INT 21h (DOS-Interrupt) beschrieben. ! Volume- oder SubDir-Attribut nicht erlaubt.

Aufruf: AH=43
        AL=0 lesen, AL=1 schreiben (dann CX=neues Attribut)
        DS:DX=Beginn Pfad
Return: falls CF=0: CX=Attribut (bei Lesen)
Fehler: AX=1, 2, 3, 5
Auswahlliste

FU45H

Duplicate File Handle generiert ein zweites Handle für eine bereits geöffnete Datei.
Aufruf: AH=45
        BX=Handle
Return: falls CF=0: AX=neuen Handle
Fehler: AX=4, 6
Auswahlliste

FU46H

Force Duplicate File Handle

Ordnet zwei verschiedenen Handles eine gemeinsame Datei zu

Aufruf: AH=46
        BX=1.Handle, CX=2.Handle
Return: falls CF=0:
        Datei gemäß CX geschlossen, Handle CX entspricht
        nun 1:1 dem Handle BX
Fehler: AX=4, 6
Auswahlliste

FU47H

Get Current Directory

Liefert den aktuellen Pfad des angegebenen Laufwerkes.

Aufruf: AH=47
        DL=Laufwerk (0=aktuell, 1=A,...)
        DS:SI=Zielpuffer (64 Bytes)
Return: falls CF=0: Zielpuffer mit aktuellem Pfad gefüllt.
        (ohne Laufwerk und ohne führendem \).
Fehler: AX=15
Auswahlliste

FU48H

Allocate Memory - Speicherplatz reservieren

Fordert einen Speicherblock von DOS an. Dieser Speicherblock wird von DOS nicht mehr an ein anderes Programm vergeben, bis er wieder freigegeben wird (FU49H).

Aufruf: AH=48
        BX=Größe des Blocks in Paragraphen (1 Paragraph=16 Bytes)
Return: falls CF=0: AX=Segment 1.Block
        falls CF=1 und AX=8: BX=größter freier Block in Paragraphen
Fehler: AX=7, 8
Auswahlliste

FU49H

Free Allocated Memory

Gibt einen mit FU48H angeforderten Speicherblock wieder frei.

Aufruf: AH=49
        ES=Segment 1.Block, der freigegeben werden soll.
Return: falls CF=0: fehlerfrei
Fehler: AX=7, 9
Auswahlliste

FU4AH

Set Block

Ändert Größe eines Speicherblocks.

Aufruf: AH=4A
        BX=neue Größe des Blocks in Paragraphen (1 Paragraph=16 Bytes)
        ES=Segment 1.Block, der verändert werden soll
Return: falls CF=0: neue Blockgröße gesetzt
        falls CF=1 und AX=8: BX=größter freier Block in Paragraphen
Fehler: AX=7, 8, 9
Auswahlliste

FU4BH

Load and Execute Program / Load Overlay

Dient zum Laden und Starten eines Programmes oder zum Nachladen eines Overlays.

Laden und Starten:

! Vor dem Aufruf unbedingt mit FU4AH Speicher zur Verfügung stellen, alle Register außer CS und IP werden zerstört.

Aufruf: AX=4B00
       DS:DX=Pfad vom Programm
       ES:DX=Parameterblock, Struktur:
          OFS LEN Inhalt
          00  2        Segment Environment
          02  4        Ptr. Kommandozeile
          06  4        Ptr. FCB1 (für 5CH)
          0A  4        Ptr. FCB2 (für 6CH)
Return: bei CF=0: Programm wurde ausgeführt und ist zurückgekehrt.
Fehler: AX=1, 2, 8, 10, 11

Nachladen Overlay:
AX=4B03
sonst alle Register wie bei Funktion 4B00H, jedoch
anderer Parameterblock:
         OFS LEN Inhalt
         00  2        Segment des Zielspeichers für Overlay
         02  2        Relokationsfaktor (meist gleicher Inhalt wie OFS 0)
Return: bei FC=0:   Overlay geladen
Fehler: AX=1, 2, 8, 10
Auswahlliste

FU4CH

End Process (UNIX) =empfohlene Methode

Beendet ein Programm und gibt seinen Speicherbereiches wieder an DOS zurück. Gibt Return-Code zurück.

Aufruf: AH=4C
        AL=Return-Code
Return: Int-Vektoren 22H bis 24H werden aus PSP ab Offset 0AH restauriert.
Alle Dateipuffer werden auf Disk geschrieben. Schließt alle geöffneten
Dateien und frischt das Directory auf.
Fehler: keine
Auswahlliste

FU4DH

Get Return Code Child Process

Ermittelt den von Funktion 31 oder 4C übergebenen Returncode und den Grund der Programmbeendigung. Der Returncode kann nur 1-mal ermittelt werden

Aufruf: AH=4D
Return: AL=Returncode
        AH=Grund der Programmbeendigung
           0=normales Ende
           1=Abbruch mit ^C
           2=schwerer Fehler
           3=durch Funktion 31
Fehler: keine
Auswahlliste

FU4EH

Find First File

Sucht erste passende Datei gem. dem angegebenen Pfad. Die Attribute System und Hidden finden immer auch Archiv und Read-Only. Das Attribut Volume findet nur Volume.

Aufruf: AH=4E
        CX=Attribut
        DS:DX=Beginn Suchpfad
Return: Wenn CF=0: Ab DTA gefundenen Eintrag:
                   Offset Länge        Inhalt
                   0      21d          DOS reserviert
                   15h     1           Attribut
                   16h     2           Zeit
                   18h     2           Datum
                   1Ah     4           Länge
                   1Eh    13d          Name
Fehler: AX= 2, 18
Auswahlliste

FU4FH

Find Next File

Sucht nach Funktion 4E die nächste passende Datei.

Aufruf: AH=4F
        DTA von Funktion 4E vorbelegt.
Return: Wenn CF=0: siehe bei Funktion 4E
Fehler: AX= 18
Auswahlliste

FU50H

undokumentiert

FU51H

undokumentiert

FU52H

undokumentiert

FU53H

undokumentiert
Auswahlliste

FU54H

Get Verify State

Liefert den momentanen Wert des Verify-Flags

Aufruf: AH=54
Return: AL=00 -> OFF, 01 -> ON
Fehler: keine
Auswahlliste

FU55H

undokumentiert
Auswahlliste

FU56H

Datei umbenennen

Entspricht einem Rename mit Einbeziehung des Pfades. ! Wildcards im Pfadnamen verboten. Beide Pfade müssen auf dem gleichen Laufwerk liegen.

Wenn die Pfadnamen sich unterscheiden, aber die Dateinamen-und Typen gleich sind, werden die Dateien ins neue Verzeichnis kopiert und im alten gelöscht.

Aufruf: AH=56
        DS:DX=Beginn alter Pfad
        ES:DI=Beginn neuer Pfad
Return: CF=0  wenn fehlerfrei
Fehler: AX= 2, 5, 17
Auswahlliste

FU57H

Get/ Set Date/ Time of File

Liest bzw. setzt das Datum und die Zeit einer Datei. Beide Parameter werden gepackt übergeben. ! bei Set erfolgt keine Gültigkeitsprüfung.

Aufruf: AH=57
        AL=0 ->get     AL=1 ->set
        BX=Handle
        wenn set:
             CX=Zeit   hhhh hmmm mmms ssss
             DX=Datum  jjjj jjjm mmmt tttt
Return: bei CF=0:
            get: CX=Zeit, DX=Datum
            set: Datum und Zeit gesetzt
Fehler: AX= 2, 5, 17
Auswahlliste

FU58H

Get/ Set allocation Strategy

Liefert oder setzt die Strategie, mit der MS-DOS Speicher für Programme vergeben soll.

Strategie 0 (=first fit): MS-DOS beginnt die Suche bei dem am weitesten unten liegenden Speicherblock, also bei möglichst kleinen Adressen. Der erste gefundene Block, der mindestens genauso groß ist wie der angeforderte Speicherblock, wird belegt.

Strategie 1 (=best fit): MS-DOS durchsucht alle Speicherblöcke nach dem Block, der die Anforderungen am wenigsten übersteigt. Somit wird der "wirtschaftlichste Block" belegt.

Strategie 2 (=last fit): MS-DOS beginnt die Suche bei dem am weitesten oben liegenden Speicheblock, also bei möglichst großen. Der erste gefundene Block, der mindestens genauso groß ist wie der angeforderte Speicherblock, wird belegt.

MSDOS verwendet standardmäßig die Methode "first fit", da sie die schnellstmögliche Vergabe gewährleistet.

Beispielprogramm:
        page        65,120
        .sall
comment #
Setzt die Speicherbelegungsstrategie auf 1 (best fit)
Matthaei, 9-FEB-91
#
        .xlist
        include firm.asm
        .list
        mov       b attr,16*n_blue+n_yell
        cld
        mov       ax,5800h        ;lese Speicherbelegungsstrategie
        int       dos
        add       al,48           ;justiere nach ASCII
        mov       strat,al
        call      prmsg
        db        'Zur Zeit wird die Speicherbelegungsstrategie '
strat   db        0
        db        ' benutzt.'
        db        cr,0
        mov       ax,5801h        ;setze Speicherbelegungsstrategie 1
        mov       bx,1
        int       dos
        PRSTR     'Sie wurde auf 1 (best fit) geändert.'
        jmp       ret0

code    ends
        end        start
Auswahlliste

FU59H

Get Extended Error Information

Liefert eine erweiterte Fehlerbeschreibung nach dem Auftreten eines Fehlers bei einer Funktion INT21. Die Funktion wird an einem Quick-BASIC-Testprogramm gezeigt.

Aufruf: AH=59
        BX=0
Return: AX=erweiterter Fehler
        BH=Fehlerklasse
        BL=empfohlene Aktion
        CH=Fehlerquelle
Fehler: keine

Quick-BASIC Textprogramm:
'Programmverwendung.:
'Testprogramm zum INT21, Funktion 59, erweiterten Fehlercode holen
'QB aufrufen mit OPTION /L wegen QuickLIB-Unterstützung
'Beim Linken mit LINK: QB (per Default wird daraus QB.LIB) als
'Bibliothek angeben

TYPE regtyp
  ax AS INTEGER
  bx AS INTEGER
  cx AS INTEGER
  dx AS INTEGER
  bp AS INTEGER
  si AS INTEGER
  di AS INTEGER
  flags AS INTEGER
  ds AS INTEGER
  es AS INTEGER
END TYPE

DIM inreg AS regtyp, outreg AS regtyp

ON ERROR GOTO FU59
OPEN "ABCDEFGH.IJK" FOR INPUT AS #1  '<- erzeugt einen fehler,
                                     ' da es die datei nicht gibt
stop

fu59:
'parameterbeschreibung für int 21h, erweiterte fehlercodes holen
'aufruf:
'ah=59h
'bx = 0
'rückgabe:
'ax=fehlerbeschreibung
'bh=fehlerursache
'bl=empfohlene aktion
'ch=fehlerquelle

inreg.ax = &h5900: inreg.bx = 0       'hole erweiterten fehlercode

call interrupt(&h31, inreg, outreg)

print "Fehlerbeschreibung: ";
select case outreg.ax
case 0: print "kein Fehler"
case 1: print "Unbekannte Funktionsnummer "
case 2: print "Datei nicht gefunden"
case 3: print "Pfad nicht gefunden"
case 4: print "Zuviele Dateien gleichzeitig eröffnet"
case 5: print "Zugriff verweigert"
case 6: print "Ungültiger Handle"
case 7: print "Speicher-Kontrollblock zerstört"
case 8: print "Zu wenig freier Speicher"
case 9: print "Ungültige Speicher-Kontrollblockadresse"
case 10: print "Ungültiges Environment"
case 11: print "Ungültiges Format"
case 12: print "Ungültiger Zugriffscode"
case 13: print "Ungültige Daten"
case 14
print
print "Kann nicht sein- diese Fehlerbeschreibung wird nicht verwendet"
case 15: print "Ungültige Laufwerksangabe"
case 16
print
print "Versuch, das aktuelle Verzeichnis (Directory) zu löschen"
case 17: print "Zugriff auf ein anderes Gerät"
case 18: print "Keine weiteren Dateien"
case 19: print "Diskette ist schreibgeschützt"
case 20: print "Ungültige Gerätebezeichnung"
case 21: print "Laufwerk nicht bereit"
case 22: print "Unbekannter Befehl"
case 23: print "Datenfehler (CRC)"
case 24: print "Ungültige Datenlänge"
case 25: print "Fehler beim Suchen"
case 26: print "Unbekannter Gerätetyp"
case 27: print "Sektor nicht gefunden"
case 28: print "Drucker ohne Papier"
case 29: print "Schreibfehler"
case 30: print "Lesefehler"
case 31: print "Allgemeiner Fehler"
case 32: print "Fehler beim gemeinsamen Zugriff"
case 33: print "Fehler bei Dateisperre"
case 34: print "Unerlaubter Diskettenwechsel"
case 35: print "FCB nicht verfügbar"
case 80: print "Datei existiert bereits"
case 82: print "Verzeichnis kann nicht erstellt werden"
case 83: print "Abbruch nach Aufruf des Interrupts 24h (Set relative Record)"
case else: print "Undefiniert, ="; outreg.ax
end select
print "Ursache___________: ";
select case int(outreg.bx / 256)
case 1
print "Resource erschöpft"
print "(z.B.kein Speicherplatz mehr, keine offenen Kanäle mehr"
case 2: print "Im Augenblick: Zugriff verboten"
case 3: print "Sie haben keine Zugriffsberechtigung"
case 4: print "Interner Fehler in der Systemsoftware"
case 5: print "Hardwarefehler"
case 6: print "Fehler in der Systemsoftware, z.B. fehlende Konfigurationsdatei"
case 7: print "Fehler im Anwendungsprogramm "
case 8: print "Objekt (z.B. Datei) nicht gefunden"
case 9: print "Ungültiges Format oder Typ, z.B. falsches Dateiformat"
case 10: print "Objekt (z.B. Datei) ist gesperrt"
case 11: print "Problem mit Datenträger, z.B. Fehler auf Diskette"
case 12: print "Existiert bereits, z.B. die Netztwerkbezeichnung"
case else: print "Unbekannt"
end select

print "Fehlerquelle:_____: ";
select case (outreg.cx / 256)

case 1: print "unbekannt"
case 2: print "Blocktreiber (z.B. Laufwerk)"
case 3: print "Netzwerk "
case 4: print "Serielles Gerät"
case 5: print "RAM-Speicher"
case else: print "unbekannt"
end select

print "Aktion:"
select case (outreg.bx and 255)

case 1: print "Vorgang wiederholen, dann Anwender zu Rate ziehen"
case 2: print "Vorgang nach einer Pause wiederholen, dann Anwender zu Rate ziehen"
case 3: print "Bitte stellen Sie die erforderlichen Informationen / Daten bereit"
case 4
print "Programm vorzeitig beendet - Dateien geschlossen"
close
system
case 5
print "Programm abgebrochen, Dateien nicht geschlossen"
system
case 6: print "Fehlermeldung ist nur eine Information"
case 7: print "Bitte beheben Sie den Fehler"
case else: print "Keine empfohlene Aktion gefunden"
end select

resume next
</xmp>
Auswahlliste

FU5AH&

Create Temporary File
Erzeugt eine leere Datei ohne Angabe eines Namens (DOS liefert einen Namen) und öffnet sie zum Lesen und Schreiben
! Eine bereits vorhanden Datei gleichen Namens wird gelöscht.
Aufruf: AH=5A
        CX=Attribut [08 (Volume) und 10h(SubDir) nicht möglich]
        DS:DX=Beginn Pfad,
        Aufbau: Pfadname, gefolgt von einem \, gefolgt von
                14 NUL-Bytes.
Return: falls CF=0: AX=Handle
Fehler: AX=3, 5
Auswahlliste

FU5BH

Erzeugt eine leere Datei gem. Pfad und öffnet sie zum Lesen und Schreiben. Falls die Datei bereits existiert, wird Fehler 80 zurückgemeldet. Vergl. Funktion 3C

Aufruf: AH=5B
        CX=Attribut [08 (Volume) und 10h(SubDir) nicht möglich]
        DS:DX=Beginn Pfad
Return: falls CF=0: AX=Handle
Fehler: AX=3, 4, 5, 80
Auswahlliste

FU5CH

Lock / Unlock

Sperrt / entsperrt Teile einer Datei gegen jeden Zugriff durch andere Programme. SHARE.EXE muss geladen sein, sonst wird immer Fehler 1 generiert. Sperren sollte nur verwendet werden, wenn die Datei in einem Modus eröffnet wurde, der entweder Lesezugriffe oder gar nichts verbietet. Beim Entsperren muss der Datenbereich mit dem gesperrten Datenbereich übereinstimmen.

Aufruf: AH=5C
        AL=0 -> Lock =1 ->Unlock
        BX=Handle
        CX=High Word Position
        DX=Low Word Position
        SI=High Word Länge
        DI=Low Word Länge
Return: falls CF=0: fehlerfrei
Fehler: AX=1, 6, 33
Auswahlliste

FU62H

Get PSP

Liefert die Segmentadresse des PSP vom gerade aktiven Programm

Aufruf: AH=62
Return: BX=Segmentadresse PSP
Fehler: keine
Auswahlliste
Seite zuletzt geändert am 21.11.2007