#ifndef __MSDOS_H
#define __MSDOS_H

#include <dirent.h>
#include <windows.h>
#include "comm.h"

struct dosdirent {
	int  inuse;
	DIR *ds;
	char unixpath[256];
	char filename[256];
	char filemask[12];
	char attribute;
	char search_attribute;
	long filesize;
	long filetime;
};

struct fcb {
        BYTE drive;
	char name[8];
	char extension[3];
	BYTE dummy1[4];
	int filesize;
	WORD date_write;
	WORD time_write;
	struct dosdirent *directory;
	BYTE dummy2[9];
};

#define DOSVERSION 0x0330;
#define MAX_DOS_DRIVES	26

extern WORD ExtendedError;
extern struct DosDeviceStruct COM[MAX_PORTS];
extern struct DosDeviceStruct LPT[MAX_PORTS];

#define segment(a) 	((DWORD)(a) >> 16)
#define offset(a)	((DWORD)(a) & 0xffff)

#define setword(a,b)	*(BYTE*)(a)	  = (b) & 0xff; \
			*((BYTE*)((a)+1)) = ((b)>>8) & 0xff;
			
#define setdword(a,b)	*(BYTE*)(a)	= (b) & 0xff; \
			*((BYTE*)(a)+1) = ((b)>>8) & 0xff; \
			*((BYTE*)(a)+2) = ((b)>>16) & 0xff; \
			*((BYTE*)(a)+3) = ((b)>>24) & 0xff;

#define getword(a)	(WORD) *(BYTE*)(a) + \
			(*((BYTE*)(a) + 1) << 8)

#define getdword(a)	(DWORD) (*(BYTE*)(a) + \
			(*((BYTE*)(a) + 1) << 8) + \
			(*((BYTE*)(a) + 2) << 16) + \
			(*((BYTE*)(a) + 3) << 24))

/* dos file attributes */

#define FA_NORMAL   0x00        /* Normal file, no attributes */
#define FA_RDONLY   0x01        /* Read only attribute */
#define FA_HIDDEN   0x02        /* Hidden file */
#define FA_SYSTEM   0x04        /* System file */
#define FA_LABEL    0x08        /* Volume label */
#define FA_DIREC    0x10        /* Directory */
#define FA_ARCH     0x20        /* Archive */

/* extended error codes */

#define NoError		0x00
#define InvalidFunction 0x01
#define FileNotFound	0x02
#define PathNotFound	0x03
#define AccessDenied	0x05
#define InvalidHandle	0x06
#define MCBDestroyed	0x07
#define	OutOfMemory	0x08
#define MCBInvalid	0x09
#define DataInvalid	0x0d
#define InvalidDrive	0x0f
#define CanNotRemoveCwd	0x10
#define	NotSameDevice	0x11
#define NoMoreFiles	0x12
#define WriteProtected  0x13
#define	UnknownUnit	0x14
#define DriveNotReady	0x15
#define UnknownCommand	0x16
#define CRCError	0x17
#define	BadRqLength	0x18
#define SeekError	0x19
#define	UnknownMedia	0x1a
#define	SectorNotFound	0x1b
#define OutOfPaper	0x1c
#define WriteFault	0x1d
#define ReadFault	0x1e
#define	GeneralFailure	0x1f
#define ShareViolation	0x20
#define LockViolation	0x21
#define DiskFull	0x27
#define NoNetwork	0x49
#define FileExists	0x50
#define CanNotMakeDir	0x52

/* Error classes */

#define EC_Temporary	0x02
#define EC_AccessDenied	0x03
#define EC_AppError	0x04
#define EC_SystemFailure 0x06
#define EC_NotFound	0x08
#define	EC_MediaError	0x0b
#define EC_Exists	0x0c
#define	EC_Unknown	0x0d

/* Suggested actions */

#define	SA_Retry	0x01
#define SA_Abort	0x04
#define SA_Ignore	0x06
#define SA_Ask4Retry	0x07

/* Error locus */

#define EL_Unknown	0x01
#define EL_Disk		0x02
#define EL_Network	0x03
#define EL_Memory	0x05

#endif /* __MSDOS_H */
