17 |
|
#include <sys/io.h> |
18 |
|
|
19 |
|
|
20 |
< |
/* Number of tracks (tracks are numbered 1..NUM_TRACKS) */ |
21 |
< |
#define NUM_TRACKS 35 |
20 |
> |
/* Disk format description */ |
21 |
> |
struct format_t { |
22 |
> |
int sides; |
23 |
> |
int tracks_per_side; |
24 |
> |
const int *bps; // bps for each speed zone |
25 |
> |
const int *std_speed; // zone for each track |
26 |
> |
const int *num_sectors; // number of sectors for each track |
27 |
> |
}; |
28 |
> |
|
29 |
> |
/* Selected format */ |
30 |
> |
extern const struct format_t *format; |
31 |
> |
|
32 |
|
|
33 |
|
/* Maximum number of sectors per track */ |
34 |
< |
#define MAX_SECTORS 21 |
34 |
> |
#define MAX_SECTORS 29 |
35 |
|
|
36 |
|
/* Bytes per sector */ |
37 |
|
#define SECTOR_SIZE 256 |
38 |
|
|
39 |
+ |
/* Track buffer */ |
40 |
+ |
extern unsigned char track_buf[MAX_SECTORS * SECTOR_SIZE]; |
41 |
+ |
|
42 |
|
|
43 |
|
/* Bit rate for each speed zone */ |
44 |
|
extern const int bps[4]; |
45 |
|
|
33 |
– |
/* Standard speeds for tracks */ |
34 |
– |
extern const int std_speed[NUM_TRACKS + 1]; |
35 |
– |
|
36 |
– |
/* Number of sectors per track, for all tracks */ |
37 |
– |
extern const int num_sectors[NUM_TRACKS + 1]; |
38 |
– |
|
46 |
|
|
47 |
|
/* Drive number */ |
48 |
|
extern int drive_num; |
66 |
|
extern int thresh_table[3]; |
67 |
|
|
68 |
|
|
62 |
– |
/* Track buffer */ |
63 |
– |
extern unsigned char track_buf[MAX_SECTORS * SECTOR_SIZE]; |
64 |
– |
|
65 |
– |
|
66 |
– |
/* Delay specified number of milliseconds */ |
67 |
– |
extern void msdelay(int ms); |
68 |
– |
|
69 |
– |
/* Seek to given CBM track (1..35) and select correct side and speed zone */ |
70 |
– |
extern void seek_to(int drive, int track); |
71 |
– |
|
69 |
|
/* |
70 |
|
* Parse command line arguments and set |
71 |
|
* c.iobase |
81 |
|
/* Obtain access to I/O ports */ |
82 |
|
extern void ioport_access(void); |
83 |
|
|
84 |
+ |
/* Delay specified number of milliseconds */ |
85 |
+ |
extern void msdelay(int ms); |
86 |
+ |
|
87 |
+ |
/* Select disk format */ |
88 |
+ |
extern void select_format(int type); |
89 |
+ |
|
90 |
+ |
/* Seek to given CBM track (1..35) and select correct side and speed zone */ |
91 |
+ |
extern void seek_to(int drive, int track); |
92 |
+ |
|
93 |
|
/* Start drive */ |
94 |
|
extern void start_drive(int drive); |
95 |
|
|