home *** CD-ROM | disk | FTP | other *** search
- /* DOSLIB.H */
- #include <string.h>
- #include <dos.h>
- #include <stdlib.h>
- #include <stdio.h>
- #include <dir.h>
- #include <io.h>
- #if sizeof (void *) == 2
- #error Grosses Datenmodell benutzen!
- #endif
-
- #define DOSLIBH
-
- typedef enum { FALSE, TRUE } Boolean;
-
- typedef struct /* Struktur eines PSP-Segments */
- { char INT20[2]; /* INT $20-Befehl */
- unsigned MemEnd; /* höchste Speicheradresse in Paragraphs */
- char Fill1; /* unbenutzt */
- char DOSJmp[5]; /* JMP FAR zu DOS, mit 1. Prog-Seg */
- void far *OrgInt22;/* Originalwert INT 0x22, d.h. Rücksprungadresse */
- void far *OrgInt23; /* Originalwert INT 0x23 */
- void far *OrgInt24; /* Originalwert INT 0x24 */
- unsigned ParentPSP; /* PSP-Segment des aufrufenden Programms */
- unsigned char JFT[20]; /* Offene Dateien */
- unsigned EnvSeg; /* Environment-Segment */
- unsigned SPSave; /* SP beim letzten DOS-Aufruf */
- unsigned SSSave; /* SS beim letzten DOS-Aufruf */
- unsigned FILES; /* DOS 3.x: Maximalzahl offener Dateien */
- unsigned char far *JFTAddr; /* DOS 3.x: Datei-Tabelle, normalerweise @FTable */
- void far *PrevPSP; /* DOS 3.x: vorangehendes PSP ($FFFFF) */
- char Fill2[20]; /* unbenutzt */
- char DOSCall[3]; /* INT $21 / RETF */
- char Fill3[9]; /* unbenutzt */
- /* FCB */
- unsigned char Drive; /* Laufwerksnummer: 1 = A:, 2 = B: usw. */
- char Name[8]; /* Dateiname, aufgefüllt mit Leerz. */
- char Suffix[3]; /* Suffix, aufgefüllt mit Leerzeichen */
- unsigned CurrBlock; /* momentane Blocknummer */
- unsigned RecSize; /* Datensatzgröße in Bytes */
- unsigned char NewDrive; /* für den FCB: FileSize, ModDate... */
- char NewName[8];
- char NewSuffix[3];
- char Fill4[8]; /* ... bis fcb_random mit 3(!) Bytes */
- unsigned char DTA[128];
- } PSPSeg;
-
- typedef struct /* Spezial-FCB für "Rename" */
- { unsigned char OrgDrive; /* Laufwerks-Kennziffer */
- char OrgName[8], OrgExt[3]; /* Name und Suffix */
- char Fill[4]; /* unbenutzt */
- unsigned char NewDrive; /* muß == OrgDrive sein */
- char NewName[8], NewExt[3]; /* neuer Name, Suffix */
- } RenameFCBRec;
-
- typedef struct
- { unsigned char DriveNo; /* 0 = A, 1 = B: etc. */
- unsigned char SubUnit; /* relative Lw.-Nummer des Treibers */
- unsigned BytesSec; /* Bytes pro Sektor */
- unsigned char SecsClus; /* Sektoren pro Cluster -1 */
- unsigned char ClusSize; /* Clustergröße in der Form 2^x */
- unsigned SecsBoot; /* Anzahl reservierter Sektoren */
- unsigned char FATCount; /* Anzahl FATs (2) */
- unsigned RootEntries; /* Anzahl Einträge im Stammverz. */
- unsigned FirstData; /* Nummer d. ersten Datensektors */
- unsigned MaxClus; /* höchstmögliche Clusternummer */
- } DPBStart;
-
- /* Zweiter Teil des DPB für DOS 2.x */
- typedef struct
- { unsigned char FATSize; /* Anzahl Sektoren pro FAT */
- unsigned RootStart; /* Erster Sektor Stammverzeichnis */
- void *DevDriver; /* Gerätetreiber für dieses Laufwerk */
- unsigned char MediaID; /* Media-Deskriptor */
- unsigned char Dirty; /* 0xFF -> Block muß neu aufgebaut werden */
- void *Next; /* Adresse nächster DPB */
- unsigned CurrDir; /* Start-Cluster aktuelles Verzeichnis */
- char CurrPath[64]; /* Name akt. Verzeichnis */
- } DPBPart2x;
-
- typedef struct /* dito für DOS 3.x */
- { unsigned char FATSize; /* Anzahl Sektoren pro FAT */
- unsigned RootStart; /* Erster Sektor Stammverzeichnis */
- void *DevDriver; /* Gerätetreiber für dieses Laufwerk */
- unsigned char MediaID; /* Media-Deskriptor */
- unsigned char Dirty; /* 0xFF -> Block muß neu aufgebaut werden */
- void *Next; /* Adresse nächster DPB */
- unsigned ScanStart; /* Start-Clusternummer bei Suche nach freien Blocks */
- unsigned FreeClus; /* Anzahl freier Cluster */
- } DPBPart3x;
-
- typedef struct /* dito für DOS 4.x und 5.0 */
- { unsigned FATSize; /* *** Anzahl Sektoren pro FAT *** */
- unsigned RootStart; /* Erster Sektor Stammverzeichnis */
- void *DevDriver; /* Gerätetreiber für dieses Laufwerk */
- unsigned char MediaID; /* Media-Deskriptor */
- unsigned char Dirty; /* 0xFF -> Block muß neu aufgebaut werden */
- void *Next; /* Adresse nächster DPB */
- unsigned ScanStart; /* Start-Clusternummer bei Suche nach freien Blocks */
- unsigned FreeClus; /* Anzahl freier Cluster */
- } DPBPart4x;
-
- typedef DPBStart *DPBPtr; /* Zeiger auf den ersten (gemeinsamen) Teil */
- typedef DPBPart2x *Part2Ptr;
- typedef DPBPart3x *Part3Ptr;
- typedef DPBPart4x *Part4Ptr;
-
- /* Speicherkontrollblocks ab V 4.0 bzw. DR-DOS 5.0 */
- typedef struct
- { unsigned char Flag; /* 'M' oder 'Z' */
- unsigned OwnerPSP; /* PSP-Segment des "Besitzers" */
- unsigned Size; /* Größe in Paragraphs */
- char Resvd[3]; /* "reserviert" */
- char OwnerID[8]; /* Prog-Name (nur für PSP-Segmente) */
- } MCBRec, far *MCBPtr;
-
- /* Kopfinformation von Gerätetreibern */
- #ifndef DRVLIBINC
- typedef struct DHead
- { struct DHead far *Next; /* & nächster Treiber */
- unsigned DAttr; /* Treiber-Attribute */
- unsigned DStrat; /* Offset der Strategie-Routine */
- unsigned DIntr; /* Offset der Interrupt-Routine */
- char NameOrUnits[8];
- } DriverHead, far *DriverPointer;
- #endif
-
- typedef struct /* für die Funktionen 0x5Dyy */
- { unsigned AX,BX,CX,DX,SI,DI,DS,ES, /* Register */
- Resvd, /* sollte immer 0 sein */
- SysID, /* Stations-ID: 0 für die eigene Maschine */
- ProcID; /* = PSP-Segment des aufrufenden Prozesses */
- } ServerCallBlock;
-
- typedef struct /* Struktur des DOS-Variablenbereichs */
- { unsigned char CritErrFlag; /* $FF für "Critial Error", sonst $00 */
- unsigned char InDosFlag; /* 0 für "DOS inaktiv", 1 für "aktiv" */
- unsigned char CritErrDrv; /* Laufwerksnummer CritErr oder $FF */
- unsigned char ExtLocus; /* Parameter "Locus" für ExtErr */
- unsigned ExtCode; /* Parameter "Errcode" für ExtErr */
- unsigned char ExtAction; /* Parameter "Action" für ExtErr */
- unsigned char ExtClass; /* Parameter "Class" für ExtErr */
- void *LastErr; /* ES:DI beim letzten Fehler */
- void *CurrDTA; /* momentane DTA-Adresse */
- unsigned CurrPSP; /* Segmentadresse aktives PSP */
- unsigned INT23SP; /* SP bei INT23-Aufrufen */
- unsigned ExitCode; /* vom letzten Programmende */
- unsigned char DosDrive; /* Kennziffer DOS-Laufwerk */
- unsigned char ExtBreak; /* 0 für BREAK=OFF, 1 für BREAK=ON */
- unsigned char Resvd1,Resvd2; /* unbekannter Zweck */
- } DosVarArea, far *DosVarP;
-
- /* Erweiterte landesspezifische Informationen */
- typedef struct
- { char co_subfuncno; /* immer 0x01 */
- int co_datasize; /* Umfang der folgenden Daten */
- int co_countrycode; /* Nummer d. aktuellen/angegebenen Landes */
- int co_codepage; /* aktuelle/angegebene Codeseite (CON) */
- /* die restlichen Felder wie in struct country (Funktion 0x38) */
- int co_date; /* 0=USA,1=Europa,2=Japan */
- char co_curr[5]; /* Währungszeichen (ASCIIZ) */
- char co_thsep[2]; /* Tausender-Trennzeichen */
- char co_desep[2]; /* Dezimalpunkt */
- char co_dtsep[2]; /* Trennzeichen für Datum */
- char co_tmsep[2]; /* Trennzeichen für Uhrzeit */
- char co_currstyle; /* Bit 0 ? xxxx DM : DM xxxx */
- /* Bit 1 ? DM xxxx : DMxxxx */
- char co_digits; /* Anzahl Nachkommastellen */
- char co_time; /* co_time ? 24 Std : 12 Std */
- long co_case; /* char far (*Upcase)(char s) */
- char co_dasep[2]; /* Daten-Trennzeichen */
- char co_fill[10]; /* unbenutzt */
- } ExtCountry;
-
- typedef struct /* Datenträger-Info f. Funktionen 0x69xx und 0x440D/46, 66 */
- { unsigned InfoLevel; /* immer 0(?) */
- long SerialNo; /* Seriennummer */
- char VLabel[11]; /* Volume-Label */
- char FileSystem[8]; /* Dateisystem ('FATxx...') */
- } DiskSerialInfo;
-
- typedef struct /* für ExecLoad: SS:SP und CS:IP des Programms */
- { unsigned rSP,rSS, /* SS:SP */
- rIP,rCS; /* CS:IP */
- } SSIPBlock;
-
- typedef struct EXTDOSERROR /* Parameterblock für die Funktion 0x59 */
- { int exterror;
- char class, action, locus; /* wie DOSERROR */
- void far *Ptr; /* Fehlerzeiger (ES:DI) */
- } ;
-
- /* * * * * * * * * * DIVERSES * * * * * * * * * */
- unsigned SwapValInCS(unsigned OldVal); /* bringt einen Wert im CSeg unter */
-
- /********************* DOS-FUNKTIONEN ********************/
- /* 0x01 - Eingabe eines Zeichens */
- unsigned char GetChar01(void);
-
- /* 0x02 - Ausgabe eines Zeichens */
- void PutChar02(unsigned char Ch);
-
- /* 0x03 - Eingabe eines Zeichens über die serielle Schnittstelle */
- unsigned char GetChar03(void);
-
- /* 0x04 - Ausgabe eines Zeichens über die serielle Schnittstelle */
- void PutChar04(unsigned char Ch);
-
- /* 0x05 - Ausgabe eines Zeichens über die parallele Schnittstelle */
- void PutChar05(unsigned char Ch);
-
- /* 0x06 - Eingabe eines Zeichens */
- unsigned char GetChar06(void);
-
- /* Funktion 0x07 - in conio.h */
- int getch(void);
-
- /* 0x08 - Eingabe eines Zeichens */
- unsigned char GetChar08(void);
-
- /* 0x09 - Ausgabe eines Strings in CP/M-Manier */
- int WriteString09(char far *s);
-
- /* Funktion 0x0A - in conio.h */
- char *cgets(char *str);
-
- /* Funktion 0x0B - in conio.h */
- int kbhit(void);
-
- /* 0x0C - Tastaturpuffer löschen (und Funktion ausführen) */
- void ClearKbd(void);
-
- /* 0x0D - Erzwingt das physikalische Schreiben der Treiber-Puffer */
- void DriverFlush0D(void);
-
- /* 0x0E - in dir.h */
- int setdisk(int drive);
-
- /* 0x0F - CP/M-kompatibles OPEN */
- int OpenFileFCB(struct fcb far *fcb);
-
- /* 0x10 - CP/M-kompatibles CLOSE */
- int CloseFileFCB(struct fcb far *fcb);
-
- /* 0x11 - CP/M-kompatibles FINDFIRST */
- int FindFirstCPM(struct fcb far *fcb);
-
- /* 0x12 - CP/M-kompatibles FINDNEXT */
- int FindNextCPM(struct fcb far *fcb);
-
- /* 0x13 - CP/M-kompatibles DELETE */
- int DeleteFileFCB(struct fcb far *fcb);
-
- /* 0x14 - Sequentielles Lesen via FCB */
- int ReadSequential(struct fcb far *fcb);
-
- /* 0x15 - Sequentielles Schreiben via FCB */
- int WriteSequential(struct fcb far *fcb);
-
- /* 0x16 - Anlegen einer Datei via FCB */
- int CreateFileFCB(struct fcb far *fcb);
-
- /* 0x17 - Umbenennen einer Datei via Spezial-FCB */
- int RenameFCB(struct fcb far *fcb);
-
- /* 0x18 - undefiniert */
- /* void DOSFunc18(void); */
-
- /* 0x19 - in dir.h */
- int getdisk(void);
-
- /* 0x1A - in dos.h */
- void setdta(char far *dta);
-
- /* 0x1B - in dos.h */
- void getfatd(struct fatinfo *etable);
-
- /* 0x1C - in dos.h */
- void getfat(unsigned char drive,struct fatinfo *etable);
-
- /* 0x1D - undefiniert */
- /* void DosFunc1D(void); */
-
- /* 0x1E - undefiniert */
- /* void DosFunc1E(void); */
-
- /* 0x1F - Disk Parameter Block des aktuellen Laufwerks ermitteln */
- DPBPtr far GetCurrentDPB(void);
-
- /* 0x20 - undefiniert */
- /* void DosFunc20(void); */
-
- /* 0x21 - "Read Random" via FCB */
- int ReadFCBRandom(struct fcb far *fcb,long RecNo);
-
- /* 0x22 - "Write Random" via FCB */
- int WriteFCBRandom(struct fcb far *fcb,long RecNo);
-
- /* 0x23 - Ermitteln der Dateigröße via FCB */
- long GetFileSizeFCB(struct fcb far *fcb);
-
- /* 0x24 - "Set Random Record" (FCB) */
- void SetRandRecNo(struct fcb far *fcb);
-
- /* 0x25 - in dos.h */
- void setvect(int interruptno, void interrupt(*isr)());
-
- /* 0x26 - Anlegen eines neuen PSP */
- void MakeNewPSP(unsigned PSPAddr);
-
- /* 0x27 - in dos.h */
- int randbrd(struct fcb *fcb, int rcnt);
-
- /* Funktion 0x28 - in dos.h */
- int randbwr(struct fcb *fcb,int rcnt);
-
- /* 0x29 - in dos.h */
- char *parsfnm(const char *cmdline, struct fcb *fcb, int option);
-
- /* 0x2A - in dos.h */
- void getdate(struct date *datep);
-
- /* 0x2B - in dos.h */
- void setdate(struct date *datep);
-
- /* 0x2C - in dos.h */
- void gettime(struct time *timep);
-
- /* 0x2D - in dos.h */
- void settime(struct time *timep);
-
- /* 0x2E - in dos.h */
- void setverify(int value);
-
- /* 0x2F - in dos.h */
- char far *getdta (void);
-
- /* 0x30 - Ermittlung der (echten) DOS-Versionsnummer */
- unsigned DosVersion(void);
-
- /* 0x31 - in dos.h */
- void keep(unsigned char status, unsigned size);
-
- /* 0x32 - DOS Parameter Block eines beliebigen Laufwerks */
- DPBPtr GetAnyDPB(int Drive);
-
- /* 0x3300 - in dos.h */
- int getcbrk(void);
-
- /* 0x3301 - in dos.h */
- int setcbrk(int cbrkvalue);
-
- /* 0x3302 - Austausch des Break-Flags */
- int SwapCBrk(int cbrkvalue);
-
- /* 0x3304 - nicht definiert */
- /* void DosFunc3304(void); */
-
- /* 0x3305 - Ermittlung des Start-Laufwerks */
- unsigned char GetBootDrive (void);
-
- /* 0x3306 - Ermittlung des von DOS belegten Speicherbereichs */
- int GetDosHIGH(void);
-
-
- /* 0x34 - Liefert die Adresse des InDOS- und des "Critical Error"-Flags */
- void GetDOSFlags(unsigned char far **InDosPtr, unsigned char far **CritErrPtr);
-
- /* 0x35 - in dos.h */
- void interrupt (*getvect(int interruptno))();
-
- /* 0x36 - in dos.h */
- void getdfree(unsigned char drive, struct dfree *dtable);
-
- /* 0x3700 - Ermittelt das aktuelle Trennzeichen in Kommandozeilen */
- char GetSwitChar(void);
-
- /* 0x3701 - Versucht, ein neues Trennzeichen zu setzen */
- int SetSwitChar(char NewSwitch);
-
- /* 0x3702 - Liefert TRUE, wenn Geräte auch ohne
- vorangestelltes \DEV verfügbar sind
- */
- int GetDevAvail(void);
-
- /* 0x3703 - Versucht beim Aufruf mit FALSE, das Voranstellen von
- \DEV\ zwingend zu machen (nur für DOS 2.x)
- */
- void SetDevAvail(Boolean NewState);
-
- /* 0x38 - in dos.h */
- /* struct country *country(int xcode, struct country *cp); */
-
- /* 0x39 - in dir.h */
- int mkdir(const char *path);
-
- /* 0x3A - in dir.h */
- int rmdir(const char *path);
-
- /* 0x3B - in dir.h */
- int chdir(const char *path);
-
- /* 0x3C - in io.h */
- int _creat(const char *path, int attrib);
-
- /* 0x3D - in io.h */
- int _open(const char *filename, int oflags);
-
- /* 0x3E - in io.h */
- int close (int handle);
-
- /* 0x3F - in io.h */
- int _read(int handle, void *buf, unsigned len);
-
- /* 0x40 - in io.h */
- int _write(int handle, void *buf, unsigned len);
-
- /* 0x41 - in dos.h, io.h, stdio.h */
- int unlink(const char *filename);
-
- /* 0x42xx - in io.h */
- long lseek(int handle, long offset, int action);
-
- /* 0x4300, 0x4301 - in io.h */
- int _chmod(const char *filename, int func, ...);
-
- /* 0x4302 - Ermittelt die Paßwort-Bits einer Datei (nur DR-DOS) */
- int GetFPass(const char far *FName);
-
- /* 0x4303 - Setzt das Paßwort und -Modus (nur DR-DOS) */
- int SetFPass(const char *FName, const char *Pass,
- unsigned char Mode);
-
- /* 0x4400 - im Prinzip via ioctl() in io.h */
- int GetDevAttributes(int Handle);
-
- /* 0x4401 - im Prinzip via ioctl() in io.h */
- int SetDevAttributes(int Handle, unsigned Attr);
-
- /* 0x4402 - Lesen von Steuerdaten von einem Gerätetreiber */
- int IOCTLReadHandle(int Handle, int Count, void far *Buf);
-
- /* 0x4403 - Schreiben von Steuerdaten zu einem Gerätetreiber via Handle */
- int IOCTLWriteHandle(int Handle, int Count, void far *Buf);
-
- /* 0x4404 - Lesen von Steuerdaten von einem Blocktreiber */
- int IOCTLReadBlock(int Drive, int Count, void far *Buf);
-
- /* 0x4405 - Schreiben von Steuerdaten zu einem Blocktreiber */
- int IOCTLWriteBlock(int Drive, int Count, void far *Buf);
-
- /* 0x4406 - Ermitteln des Eingabestatus eines Gerätes bzw. einer Datei */
- int IOCTLGetInputStatus(int Handle);
-
- /* 0x4407 - Ermitteln des Ausgabestatus eines Gerätes bzw. einer Datei */
- int IOCTLGetOutputStatus(int Handle);
-
- /* 0x4408 - Prüfung, ob ein Speichermedium wechselbar ist */
- int IOCTLChangeable(unsigned char Drive);
-
- /* 0x4409 - Prüfung, ob ein Speichermedium lokal ist */
- unsigned IOCTLDevLocal(unsigned char Drive);
-
- /* 0x440A - Prüfung, ob ein Handle sich auf ein lokales Gerät bezieht */
- unsigned IOCTLHandleLocal(int Handle);
-
- /* 0x440B - Setzt den Wiederholungszähler von SHARE */
- void IOCTLSetRetry(unsigned Repeats, unsigned Counter);
-
- /* 0x440C - Generischer IOCTL-Aufruf (Handle) */
- int IOCTLGenericHandle(int Handle, int Category, int Subcode, void far *Block);
-
- /* 0x440D - Generischer IOCTL-Aufruf (Block) */
- int IOCTLGenericBlock(unsigned char Drive,
- unsigned char Subcode, void far *Block);
-
- /* 0x440E - Aktive Kennziffer eines umschaltbaren Laufwerks ermitteln */
- int IOCTLGetLogMap(unsigned char Drive);
-
- /* 0x440F - Aktive Kennziffer eines Laufwerks umschalten */
- void IOCTLSetLogMap(unsigned char NewDrive);
-
- /* 0x4410 - Prüfung unterstützter IOCTL-Funktionen (Handle) */
- int IOCTLSupportH(int Handle, int Category, int Subcode);
-
- /* 0x4411 - Prüfung unterstützter IOCTL-Funktionen (Block) */
- int IOCTLSupportB(int Drive, int Subcode);
-
- /* 0x45 - in dos.h */
- int dup(int handle);
-
- /* 0x46 - in dos.h */
- int dup2(int oldhandle, int newhandle);
-
- /* 0x47 - in dir.h */
- int getcurdir(int drive, char *directory);
-
- /* 0x48 - in alloc.h */
- int allocmem(unsigned size, unsigned *segp);
-
- /* 0x49 - in alloc.h */
- int freemem(unsigned seg);
-
- /* 0x4A - in alloc.h */
- int setblock(unsigned segx, unsigned newsize);
-
- /* 0x4B00 - in process.h */
- /* int spawn...(int mode, char *path, char *argv[]); */
-
- /* 0x4B01 - Lädt ein Programm, ohne es auszuführen */
- int ExecLoad(char *far Path, char far *ProgArgs,
- SSIPBlock far *ProgRegs);
-
- /* 0x4B03 - Laden eines Overlays in Microsoft-Manier */
- int LoadOverlay(const char far *Name,
- unsigned LoadAddr, unsigned Reloc);
-
- /* 0x4B05 - Ankündigigung eines Programmstarts */
- /* ... funktioniert noch nicht */
-
- /* 0x4C - in process.h, stdlib.h */
- void exit(int status);
-
- /* 0x4D - Ermittelt den Exitcode eines Programms */
- unsigned DosExitCode(void);
-
- /* 0x4E - in dir.h */
- int findfirst(const char *path, struct ffblk *ffblk, int attrib);
-
- /* 0x4F - in dir.h */
- int findnext(struct ffblk *ffblk);
-
- /* 0x50 - setzt die Segmentadresse des aktiven PSP */
- void SetPSP(unsigned NewPSP);
-
- /* 0x51 - im Prinzip (nämlich über Funktion 0x62) in dos.h */
- unsigned GetPSP51(void);
-
- /* 0x52 - ermittelt die Adresse des DOS-Datenbereichs */
- void far *GetDosDataArea(void);
-
- /* 0x53 - Rechnet einen BIOS Parameter Block in
- einen DOS Parameter Block um
- */
- void MakeDPB(void far *BPB, void far *DPB);
-
- /* 0x54 - in dos.h */
- int getverify (void);
-
- /* 0x55 - Erweiterte Version der Funktion 0x26: legt ein neues PSP an */
- void CreateNewPSP(unsigned NewSeg, unsigned MemTop);
-
- /* 0x56 - in stdio.h */
- int rename(const char *oldname, const char *newname);
-
- /* 0x5700 - in dos.h, io.h */
- int getftime(int handle, struct ftime *timep);
-
- /* 0x5701 - in dos.h, io.h */
- int setftime(int handle, struct ftime *timep);
-
- /* 0x5800 - Liefert eine Kenziffer für die momentan verwendete
- Logik beim Belegen von Speicherblocks
- */
- unsigned char GetAllocStrat(void);
-
- /* 0x5801 - Setzt die Logik für folgende Belegungen von Speicherplatz */
- void SetAllocStrat(unsigned char NewStrat);
-
- /* 0x5802 - Prüft, ob ein eventuell vorhandene
- UMBs mit berücksichtigt werden
- */
- int GetUMBLink(void);
-
- /* 0x5803 - Versucht, UMBs mit in die Logik einzubinden */
- int SetUMBLink(unsigned char LinkState);
-
- /* 0x59 - im Prinzip in dos.h */
- /* int dosexterr(struct DOSERROR *eblkp); */
- int DosExtErr(struct EXTDOSERROR *ErrBlock);
-
- /* NB: Die Routinen zur Ermittlung der Fehlerklassen etc.
- sind in EXTERR.H definiert!
- */
- /* 0x5A - in io.h */
- int creattemp(char *path, int attrib);
-
- /* 0x5B - in io.h */
- int creatnew(const char *path, int attrib);
-
- /* 0x5C00 - in io.h */
- int lock(int handle, long offset, long length);
-
- /* 0x5C01 - in io.h */
- int unlock(int handle, long offset, long length);
-
- /* 0x5D00 - Indirekter Funktionsaufruf */
- void ServerCall(ServerCallBlock far *PBlock);
-
- /* 0x5D01 - Bringt sämtliche Dateien eines Prozesses
- auf den neuesten Stand
- */
- void UpdateAllFiles(void);
-
- /* 0x5D02 - Schließt eine Datei über ihren Namen */
- int CloseFileName(unsigned ProcID, const char far *FName);
-
- /* 0x5D03 - Schließt sämtliche Dateien einer Station */
- int CloseMachineFiles(unsigned MachID);
-
- /* 0x5D04 - Schließt sämtliche Dateien eines Prozesses */
- int CloseProcessFiles(unsigned ProcID);
-
- /* 0x5D05 - Liefert die Werte eines SHARE-Eintrags */
- int GetSHAREEntry(ServerCallBlock far *PBlock);
-
- /* 0x5D06 - Liefert den DOS-Variablenbereich */
- int GetDosVars(DosVarP *p, unsigned *Header, unsigned *MaxSize);
-
- /* 0x5D07 - Ermittelt, ob Druckjobs getrennt behandelt werden */
- unsigned char ReDirPrinterGetJob(void);
-
- /* 0x5D08 - Legt fest, ob Druckjobs getrennt behandelt werden */
- void ReDirPrinterSetJob(unsigned char Join);
-
- /* 0x5D09 - Startet einen neuen Druckjob */
- void ReDirPrinterNewJob(void);
-
- /* 0x5D0A - Direktes Setzen der Fehlerinformationen */
- void SetExtErr(unsigned ErrCode, unsigned char Class,
- unsigned char Locus, unsigned char Action,
- void far *ErrPtr);
-
- /* 0x5D0B - DOS-Variablenbereich ermitteln (nur Version 4.x) */
- void far *GetDos4VarAreas(void);
-
- /* 0x5E00 - Ermittelt den Namen einer Station */
- int GetStationName(unsigned char far *Node, char far *Name);
-
- /* 0x5E01 - Setzt Namen und Knotennummer einer Station */
- int SetStationName(unsigned char Node, const char far *Name);
-
- /* 0x5E02 - Legt einen Initialisierungsstring für
- einen Netzwerk-Drucker fest
- */
- int SetReDirPrinterSetup(const char far *DevName,
- unsigned char Len,
- const char far *Init);
- /* 0x5E03 - Ermittelt den aktuellen Initialisierungsstring
- für einen Netzwerk-Drucker
- */
- int GetReDirPrinterSetup(const char far *DevName,
- unsigned char far *Len, char far *Init);
-
- /* 0x5E04 - Legt fest, ob Tabulatoren auf einem Netz-
- Drucker interpretiert werden
- */
- int ReDirPrinterSetTabs(char far *DevName, unsigned char NewState);
-
- /* 0x5E05 - Ermittelt, ob Tabulatoren auf einem Netz-Drucker
- interpretiert werden
- */
- int ReDirPrinterGetTabs(char far *DevName);
-
-
- /* 0x5F00 - Liefert TRUE, wenn Druckerumleitungen aktiv sind */
- int ReDirPrinterGetMode(void);
-
- /* 0x5F00 - Liefert TRUE, wenn Laufwerks-Umleitungen aktiv sind */
- int ReDirDriveGetMode(void);
-
- /* 0x5F01 - Schaltet Druckerumleitungen an bzw. ab */
- int ReDirPrinterSetMode(unsigned char NewMode);
-
- /* 0x5F01 - Schaltet Laufwerks-Umleitungen an bzw. ab */
- int ReDirDriveSetMode(unsigned char NewMode);
-
- /* 0x5F02 - Sucht die Redirektionsliste nach einem Eintrag ab.
- Aufruf mit dem lokalen Namen des Gerätes, zurückgeliefert
- wird der Netz-Name und die Indexnummer.
- */
- int ReDirGetEntry(const char far *LocalName, char far *NetName);
-
- /* 0x5F03 - Ordnet einem lokalen Gerät einen Netz-Namen zu */
- int ReDirSetEntry(unsigned char DevCode, unsigned UserVal,
- char far *LocalName, char far *NetName);
-
- /* 0x5F04 - Löscht die Zuordnung zwischen einem
- lokalen und einem Netz-Namen
- */
- int ReDirDeleteEntry(char *far LocalName);
-
- /* 0x5F05 - Sucht die Redirektionsliste nach einem Eintrag ab.
- Aufruf mit dem lokalen Namen des Gerätes, zurückgeliefert
- wird der Netz-Name, die Indexnummer und die (temporäre)
- Kennziffer des NETBIOS (vgl. Funktion 0x5F02).
- */
- int ReDirGetExtEntry(const char far *LocalName,
- char far *NetName, unsigned far *NetNo);
-
- /* 0x5F06 - unbekannter Zweck */
-
- /* 0x5F07 - Stellt ein (zuvor via 0x5F08 unterdrücktes)
- lokales Laufwerk wieder zur Verfügung
- */
- int ActivateLocalDrive(unsigned char Drive);
-
- /* 0x5F08 - Unterdrückt ein lokales Laufwerk (DOS 4.x:
- unterdrückt sämtliche Laufwerke ab der
- angegebenen Kennziffer)
- */
- int DeactivateLocalDrive(unsigned char Drive);
-
- /* 0x60 - Wandelt einen Dateinamen in seine "absolute" Form um */
- char *RealFName(char *FName);
-
- /* 0x61 - nicht definiert */
-
- /* 0x62 - in dos.h */
- unsigned getpsp(void);
-
- /* 0x63 - nicht für europäische DOS-Versionen */
- void DosFunc63(void);
-
- /* 0x64 - Setzt das von PRINT benutzte und von
- der Funktion 0x08 abgefragte Flag unbekannnten Zwecks
- */
- void SetPRINTFlag(unsigned char NewVal);
-
- /* 0x6501 - Liefert Informationen über das aktuelle/angegebene Land */
- ExtCountry *far ExtCountryInfo(int CCode,
- int CPage, ExtCountry far *E);
-
- /* 0x6502 - Liefert die Tabelle für Klein/Großbuchstaben */
- int GetASCIIHiXLate(unsigned far *Size, unsigned char far **Table);
-
- /* 0x6504 - Liefert die Tabelle für Dateinamen-Großbuchstaben */
- int GetFNameHiXLate(unsigned far *Size, unsigned char far **Table);
-
- /* 0x6505 - Liefert die Tabelle mit Dateinamen-Trennzeichen */
- int GetFNameTerminators(unsigned far *Size, unsigned char far **Table);
-
- /* 0x6506 - Liefert eine Tabelle mit Sortier-Gewichtungen */
- int GetSortOrder(unsigned far *Size, unsigned char far **Table);
-
- /* 0x6507 - Liefert die DBCS-Tabelle */
- int GetDBCSVecs(unsigned far *Size, unsigned char far **Table);
-
- /* 0x6520 - Setzt ein Zeichen von Klein- auf Großbuchstaben um */
- char Upcase6520(char ch);
-
- /* 0x6521 - Setzt einen beliebigen String von Klein auf Groß um */
- char far *Upcase6521(char far *Str, unsigned Len);
-
- /* 0x6522 - Setzt einen ASCIIZ-String von Klein auf Groß um */
- char far *Upcase6522(char far *Str);
-
- /* 0x6523 - Prüfung auf "Nein"/"Ja"/"Weder noch" (== 0/1/2) */
- int Query6523(char ch);
-
- /* 0x6600 - undefiniert */
-
- /* 0x6601 - Legt die Kennziffer der zukünftigen Codeseite fest */
- int SetCodePage(unsigned NewPage);
-
- /* 0x6602 - Ermittelt die momentan gesetzten Codeseiten */
- int GetCodePage(unsigned far *CurrPage, unsigned far *SysPage);
-
- /* 0x67 - Legt die Maximalzahl von Handles neu fest */
- int SetHandleCount(int Handles);
-
- /* 0x68 - Bringt eine Datei auf den neuesten Stand,
- ohne sie zu schließen
- */
- int UpdateFile(int Handle);
-
- /* 0x6900 - Liefert die Seriennummer eines Speichermediums */
- int GetDiskSerialInfo(unsigned char Drive, DiskSerialInfo *DSInfo);
-
- /* 0x6901 - Setzt die Seriennummer eines Speichermediums */
- int SetDiskSerialInfo(unsigned char Drive, DiskSerialInfo *DSInfo);
-
- /* 0x6A (Update Network Units) - unbekannt */
-
- /* 0x6B - undefiniert */
- void DosFunc6B(void);
-
- /* 0x6C - Erweiterte Version von Open/Create */
- int CreateExtended(const char *FName, unsigned Mode,
- unsigned Attr, unsigned char Action);
-