/*

dmove86.h version 1.20c
Copyright (c) 1993 Delmonta

*/

#pragma	nonrec
#pragma	optimize space

struct	SECTBL
{
	unsigned int		num;
	struct DIRENTRY far	*buf;
	struct SECTBL		*next;
};

struct DPB
{
	unsigned char	drive;
	unsigned char	unitno;
	unsigned int	seclen;
	unsigned char	sec_clu;
	unsigned char	shiftcount;
	unsigned int	iplsectors;
	unsigned char	fatnum;
	unsigned int	root_entry;
	unsigned int	data_sec;
	unsigned int	maxclu;

};

struct	DIRENTRY
{
	char		filename[8];
	char		extname[3];
	char		attr;
	
	char		dummy[10];

	unsigned int	time;
	unsigned int	date;

	unsigned int	cluster;
	unsigned long	filesize;
};

/* fat_dpb.c */
int		getdpb(void);
unsigned far	*getfat(void);

/* dmove86.c */
int		control(struct DIRENTRY far *parent);
int		main(int argc,char *argv[]);

/* dmstdlib.c */

char		dm_errmes(char *s);
void		mkscreen(void);
void		endscreen(void);
void		selectflag(int a);
char		dm_getch(void);
char		dm_getche(void);

/* dmmenu.c */
unsigned	dmmenu(struct DIRENTRY far **dirtbl, unsigned dirnum,
			unsigned cursorpos);

/* sectbl.c */
void		freesectbl(struct SECTBL *sectbl);
void		writedir(struct SECTBL *sectbl, struct DIRENTRY far **dirtbl);

/* dmsort.c */
void		dmsort(struct DIRENTRY far **dirtbl,
				unsigned p,unsigned q);

/* abssec.a86 */
unsigned	rdabssec(void far *buf,unsigned long secno,int drive);
unsigned	wrabssec(void far *buf,unsigned long secno,int drive);

/* dmmenu()からの戻り値の下位２ビットの値 */
#define	UPDIR	0
#define	CHGDIR	1
#define	WRTDIR	2
#define	ORIGIN	3

#define	CL2SEC(c)	( Dpb.data_sec + ((long)(c)-2)*(Dpb.sec_clu+1) )
#define	DIRSEC		(Dpb.seclen / sizeof(struct DIRENTRY))

				/* カーソルキーの仮想文字コード */
#define	RIGHTKEY	'\x1c'
#define	LEFTKEY		'\x1d'
#define	UPKEY		'\x1e'
#define	DOWNKEY		'\x1f'
