--- cwcbm/common.h 2004/01/07 16:53:58 1.2 +++ cwcbm/common.h 2004/01/10 14:05:59 1.3 @@ -17,25 +17,32 @@ #include -/* Number of tracks (tracks are numbered 1..NUM_TRACKS) */ -#define NUM_TRACKS 35 +/* Disk format description */ +struct format_t { + int sides; + int tracks_per_side; + const int *bps; // bps for each speed zone + const int *std_speed; // zone for each track + const int *num_sectors; // number of sectors for each track +}; + +/* Selected format */ +extern const struct format_t *format; + /* Maximum number of sectors per track */ -#define MAX_SECTORS 21 +#define MAX_SECTORS 29 /* Bytes per sector */ #define SECTOR_SIZE 256 +/* Track buffer */ +extern unsigned char track_buf[MAX_SECTORS * SECTOR_SIZE]; + /* Bit rate for each speed zone */ extern const int bps[4]; -/* Standard speeds for tracks */ -extern const int std_speed[NUM_TRACKS + 1]; - -/* Number of sectors per track, for all tracks */ -extern const int num_sectors[NUM_TRACKS + 1]; - /* Drive number */ extern int drive_num; @@ -59,16 +66,6 @@ extern int clock_table[4]; extern int thresh_table[3]; -/* Track buffer */ -extern unsigned char track_buf[MAX_SECTORS * SECTOR_SIZE]; - - -/* Delay specified number of milliseconds */ -extern void msdelay(int ms); - -/* Seek to given CBM track (1..35) and select correct side and speed zone */ -extern void seek_to(int drive, int track); - /* * Parse command line arguments and set * c.iobase @@ -84,6 +81,15 @@ extern void parse_args(int argc, char ** /* Obtain access to I/O ports */ extern void ioport_access(void); +/* Delay specified number of milliseconds */ +extern void msdelay(int ms); + +/* Select disk format */ +extern void select_format(int type); + +/* Seek to given CBM track (1..35) and select correct side and speed zone */ +extern void seek_to(int drive, int track); + /* Start drive */ extern void start_drive(int drive);