--- uae/src/include/filesys.h 2018/04/24 16:45:08 1.1.1.3 +++ uae/src/include/filesys.h 2018/04/24 17:22:32 1.1.1.6 @@ -6,24 +6,65 @@ * Copyright 1997 Bernd Schmidt */ -#define A_FIBF_SCRIPT (1<<6) -#define A_FIBF_PURE (1<<5) -#define A_FIBF_ARCHIVE (1<<4) -#define A_FIBF_READ (1<<3) -#define A_FIBF_WRITE (1<<2) -#define A_FIBF_EXECUTE (1<<1) -#define A_FIBF_DELETE (1<<0) - struct hardfiledata { - unsigned long size; + uae_u64 size; + uae_u64 offset; int nrcyls; int secspertrack; int surfaces; int reservedblocks; int blocksize; FILE *fd; + + /* geometry from possible RDSK block */ + unsigned int cylinders; + unsigned int sectors; + unsigned int heads; }; +#define FILESYS_VIRTUAL 0 +#define FILESYS_HARDFILE 1 +#define FILESYS_HARDFILE_RDB 2 +#define FILESYS_HARDDRIVE 3 + +#define FILESYS_MAX_BLOCKSIZE 2048 + struct uaedev_mount_info; extern struct hardfiledata *get_hardfile_data (int nr); + +extern int nr_units (struct uaedev_mount_info *mountinfo); +extern int hardfile_fs_type (struct uaedev_mount_info *mountinfo, int unit_no); + +extern char *set_filesys_unit (struct uaedev_mount_info *mountinfo, int, + const char *devname, const char *volname, const char *rootdir, + int readonly, int secs, int surfaces, int reserved, + int blocksize, int bootpri); +extern char *add_filesys_unit (struct uaedev_mount_info *mountinfo, + const char *devname, const char *volname, const char *rootdir, + int readonly, int secs, int surfaces, int reserved, + int blocksize, int bootpri); +extern char *get_filesys_unit (struct uaedev_mount_info *mountinfo, int nr, + char **devname, char **volname, char **rootdir, + int *readonly, int *secspertrack, int *surfaces, int *reserved, + int *cylinders, int *size, int *blocksize, int *bootpri); +extern int kill_filesys_unit (struct uaedev_mount_info *mountinfo, int); +extern int move_filesys_unit (struct uaedev_mount_info *mountinfo, int nr, int to); +extern int sprintf_filesys_unit (struct uaedev_mount_info *mountinfo, char *buffer, int num); +extern void write_filesys_config (struct uaedev_mount_info *mountinfo, const char *unexpanded, + const char *defaultpath, FILE *f); + +extern struct uaedev_mount_info *alloc_mountinfo (void); +extern struct uaedev_mount_info *dup_mountinfo (struct uaedev_mount_info *); +extern void free_mountinfo (struct uaedev_mount_info *); + +extern void filesys_reset (void); +extern void filesys_prepare_reset (void); +extern void filesys_start_threads (void); + +extern void filesys_install (void); +extern void filesys_install_code (void); +extern void filesys_store_devinfo (uae_u8 *); + +extern int hdf_read (struct hardfiledata *hfd, void *buffer, uae_u64 offset, int len); +extern int hdf_write (struct hardfiledata *hfd, void *buffer, uae_u64 offset, int len);