2016-11-30 22:25:43 +01:00
|
|
|
/*
|
|
|
|
* UAE - The Un*x Amiga Emulator
|
|
|
|
*
|
|
|
|
* disk support
|
|
|
|
*
|
|
|
|
* (c) 1995 Bernd Schmidt
|
|
|
|
*/
|
2015-05-13 18:47:23 +00:00
|
|
|
|
2017-09-18 10:41:47 +02:00
|
|
|
#ifndef UAE_DISK_H
|
|
|
|
#define UAE_DISK_H
|
|
|
|
|
|
|
|
#include "uae/types.h"
|
|
|
|
|
2019-08-31 17:30:51 +02:00
|
|
|
typedef enum { DRV_NONE = -1, DRV_35_DD = 0, DRV_35_HD, DRV_525_SD, DRV_35_DD_ESCOM, DRV_PC_525_ONLY_40, DRV_PC_35_ONLY_80, DRV_PC_525_40_80, DRV_525_DD } drive_type;
|
2015-05-13 18:47:23 +00:00
|
|
|
|
2016-04-24 09:45:29 +00:00
|
|
|
#define HISTORY_FLOPPY 0
|
|
|
|
#define HISTORY_CD 1
|
2017-09-18 10:41:47 +02:00
|
|
|
#define HISTORY_DIR 2
|
|
|
|
#define HISTORY_HDF 3
|
|
|
|
#define HISTORY_FS 4
|
2019-08-31 17:30:51 +02:00
|
|
|
#define HISTORY_TAPE 5
|
|
|
|
#define HISTORY_GENLOCK_IMAGE 6
|
|
|
|
#define HISTORY_GENLOCK_VIDEO 7
|
|
|
|
#define HISTORY_GEO 8
|
|
|
|
#define HISTORY_STATEFILE 9
|
|
|
|
#define HISTORY_CONFIGFILE 10
|
|
|
|
#define HISTORY_MAX 11
|
2016-04-24 09:45:29 +00:00
|
|
|
|
2016-11-30 22:25:43 +01:00
|
|
|
struct diskinfo
|
|
|
|
{
|
|
|
|
uae_u8 bootblock[1024];
|
|
|
|
bool bb_crc_valid;
|
|
|
|
uae_u32 crc32;
|
|
|
|
bool hd;
|
|
|
|
bool unreadable;
|
|
|
|
int bootblocktype;
|
|
|
|
TCHAR diskname[110];
|
|
|
|
};
|
|
|
|
|
2019-08-31 17:30:51 +02:00
|
|
|
#define FLOPPY_RATE_500K 0
|
|
|
|
#define FLOPPY_RATE_300K 1
|
|
|
|
#define FLOPPY_RATE_250K 2
|
|
|
|
#define FLOPPY_RATE_1M 3
|
|
|
|
|
|
|
|
struct floppy_reserved
|
|
|
|
{
|
|
|
|
int num;
|
|
|
|
struct zfile *img;
|
|
|
|
bool wrprot;
|
|
|
|
int cyl;
|
|
|
|
int cyls;
|
|
|
|
int heads;
|
|
|
|
int secs;
|
|
|
|
int drive_cyls;
|
|
|
|
bool disk_changed;
|
|
|
|
int rate;
|
|
|
|
};
|
|
|
|
void disk_reserved_setinfo(int num, int cyl, int head, int motor);
|
|
|
|
bool disk_reserved_getinfo(int num, struct floppy_reserved *fr);
|
|
|
|
void disk_reserved_reset_disk_change(int num);
|
|
|
|
|
2015-05-13 18:47:23 +00:00
|
|
|
extern void DISK_init (void);
|
|
|
|
extern void DISK_free (void);
|
|
|
|
extern void DISK_select (uae_u8 data);
|
2016-04-24 09:45:29 +00:00
|
|
|
extern void DISK_select_set (uae_u8 data);
|
2017-09-18 10:41:47 +02:00
|
|
|
extern uae_u8 DISK_status_ciaa (void);
|
2019-08-31 17:30:51 +02:00
|
|
|
extern uae_u8 DISK_status_ciab (uae_u8);
|
2015-05-13 18:47:23 +00:00
|
|
|
extern void disk_eject (int num);
|
|
|
|
extern int disk_empty (int num);
|
2016-04-24 09:45:29 +00:00
|
|
|
extern void disk_insert (int num, const TCHAR *name);
|
2016-11-30 22:25:43 +01:00
|
|
|
extern void disk_insert (int num, const TCHAR *name, bool forcedwriteprotect);
|
|
|
|
extern void disk_insert_force (int num, const TCHAR *name, bool forcedwriteprotect);
|
2016-04-24 09:45:29 +00:00
|
|
|
extern void DISK_vsync (void);
|
2019-08-31 17:30:51 +02:00
|
|
|
extern int DISK_validate_filename (struct uae_prefs *p, const TCHAR *fname, TCHAR *outfname, int leave_open, bool *wrprot, uae_u32 *crc32, struct zfile **zf);
|
2015-09-09 21:49:41 +02:00
|
|
|
extern void DISK_handler (uae_u32);
|
2015-05-13 18:47:23 +00:00
|
|
|
extern void DISK_update (int hpos);
|
2016-04-24 09:45:29 +00:00
|
|
|
extern void DISK_update_adkcon (int hpos, uae_u16 v);
|
|
|
|
extern void DISK_hsync (void);
|
2015-05-13 18:47:23 +00:00
|
|
|
extern void DISK_reset (void);
|
2016-04-24 09:45:29 +00:00
|
|
|
extern int disk_getwriteprotect (struct uae_prefs *p, const TCHAR *name);
|
|
|
|
extern int disk_setwriteprotect (struct uae_prefs *p, int num, const TCHAR *name, bool writeprotected);
|
2017-09-18 10:41:47 +02:00
|
|
|
extern bool disk_creatediskfile (struct uae_prefs *p, const TCHAR *name, int type, drive_type adftype, int hd, const TCHAR *disk_name, bool ffs, bool bootable, struct zfile *copyfrom);
|
2019-08-31 17:30:51 +02:00
|
|
|
extern void dumpdisk (const TCHAR*);
|
2016-04-24 09:45:29 +00:00
|
|
|
extern int DISK_history_add (const TCHAR *name, int idx, int type, int donotcheck);
|
|
|
|
extern TCHAR *DISK_history_get (int idx, int type);
|
2020-05-10 22:26:13 +02:00
|
|
|
int DISK_examine_image (struct uae_prefs *p, int num, struct diskinfo *di);
|
|
|
|
extern TCHAR *DISK_get_saveimagepath(const TCHAR *name, int type);
|
2015-05-13 18:47:23 +00:00
|
|
|
extern void DISK_reinsert (int num);
|
2019-08-31 17:30:51 +02:00
|
|
|
extern int disk_prevnext (int drive, int dir);
|
|
|
|
extern int disk_prevnext_name (TCHAR *img, int dir);
|
|
|
|
|
|
|
|
extern bool gui_ask_disk(int drv, TCHAR*);
|
2015-05-13 18:47:23 +00:00
|
|
|
|
|
|
|
extern void DSKLEN (uae_u16 v, int hpos);
|
|
|
|
extern uae_u16 DSKBYTR (int hpos);
|
|
|
|
extern void DSKSYNC (int, uae_u16);
|
|
|
|
extern void DSKPTL (uae_u16);
|
|
|
|
extern void DSKPTH (uae_u16);
|
2016-04-24 09:45:29 +00:00
|
|
|
extern void DSKDAT (uae_u16);
|
|
|
|
extern uae_u16 DSKDATR (void);
|
|
|
|
extern uae_u16 disk_dmal (void);
|
|
|
|
extern uaecptr disk_getpt (void);
|
|
|
|
extern int disk_fifostatus (void);
|
2015-05-13 18:47:23 +00:00
|
|
|
|
2019-08-31 17:30:51 +02:00
|
|
|
extern int disk_debug_logging;
|
|
|
|
extern int disk_debug_mode;
|
|
|
|
extern int disk_debug_track;
|
|
|
|
#define DISK_DEBUG_DMA_READ 1
|
|
|
|
#define DISK_DEBUG_DMA_WRITE 2
|
|
|
|
#define DISK_DEBUG_PIO 4
|
|
|
|
|
2017-09-18 10:41:47 +02:00
|
|
|
#define MAX_PREVIOUS_IMAGES 50
|
2016-04-24 09:45:29 +00:00
|
|
|
|
2017-09-18 10:41:47 +02:00
|
|
|
#endif /* UAE_DISK_H */
|