mirror of
https://github.com/jamessanford/kegs.git
synced 2025-01-09 04:31:45 +00:00
117 lines
2.2 KiB
C
117 lines
2.2 KiB
C
/************************************************************************/
|
|
/* KEGS: Apple //gs Emulator */
|
|
/* Copyright 2002 by Kent Dickey */
|
|
/* */
|
|
/* This code is covered by the GNU GPL */
|
|
/* */
|
|
/* The KEGS web page is kegs.sourceforge.net */
|
|
/* You may contact the author at: kadickey@alumni.princeton.edu */
|
|
/************************************************************************/
|
|
|
|
#ifdef INCLUDE_RCSID_C
|
|
const char rcsid_iwm_h[] = "@(#)$KmKId: iwm.h,v 1.14 2004-10-20 17:29:38-04 kentd Exp $";
|
|
#endif
|
|
|
|
#define MAX_TRACKS (2*80)
|
|
#define MAX_C7_DISKS 32
|
|
|
|
#define NIB_LEN_525 0x1900 /* 51072 bits per track */
|
|
#define NIBS_FROM_ADDR_TO_DATA 20
|
|
|
|
#define DSK_TYPE_PRODOS 0
|
|
#define DSK_TYPE_DOS33 1
|
|
#define DSK_TYPE_NIB 2
|
|
|
|
typedef struct _Disk Disk;
|
|
|
|
STRUCT(Trk) {
|
|
Disk *dsk;
|
|
byte *nib_area;
|
|
int track_dirty;
|
|
int overflow_size;
|
|
int track_len;
|
|
int unix_pos;
|
|
int unix_len;
|
|
};
|
|
|
|
struct _Disk {
|
|
double dcycs_last_read;
|
|
char *name_ptr;
|
|
char *partition_name;
|
|
int partition_num;
|
|
int fd;
|
|
int force_size;
|
|
int image_start;
|
|
int image_size;
|
|
int smartport;
|
|
int disk_525;
|
|
int drive;
|
|
int cur_qtr_track;
|
|
int image_type;
|
|
int vol_num;
|
|
int write_prot;
|
|
int write_through_to_unix;
|
|
int disk_dirty;
|
|
int just_ejected;
|
|
int last_phase;
|
|
int nib_pos;
|
|
int num_tracks;
|
|
Trk *trks;
|
|
};
|
|
|
|
|
|
STRUCT(Iwm) {
|
|
Disk drive525[2];
|
|
Disk drive35[2];
|
|
Disk smartport[MAX_C7_DISKS];
|
|
int motor_on;
|
|
int motor_off;
|
|
int motor_off_vbl_count;
|
|
int motor_on35;
|
|
int head35;
|
|
int step_direction35;
|
|
int iwm_phase[4];
|
|
int iwm_mode;
|
|
int drive_select;
|
|
int q6;
|
|
int q7;
|
|
int enable2;
|
|
int reset;
|
|
|
|
word32 previous_write_val;
|
|
int previous_write_bits;
|
|
};
|
|
|
|
|
|
STRUCT(Driver_desc) {
|
|
word16 sig;
|
|
word16 blk_size;
|
|
word32 blk_count;
|
|
word16 dev_type;
|
|
word16 dev_id;
|
|
word32 data;
|
|
word16 drvr_count;
|
|
};
|
|
|
|
STRUCT(Part_map) {
|
|
word16 sig;
|
|
word16 sigpad;
|
|
word32 map_blk_cnt;
|
|
word32 phys_part_start;
|
|
word32 part_blk_cnt;
|
|
char part_name[32];
|
|
char part_type[32];
|
|
word32 data_start;
|
|
word32 data_cnt;
|
|
word32 part_status;
|
|
word32 log_boot_start;
|
|
word32 boot_size;
|
|
word32 boot_load;
|
|
word32 boot_load2;
|
|
word32 boot_entry;
|
|
word32 boot_entry2;
|
|
word32 boot_cksum;
|
|
char processor[16];
|
|
char junk[128];
|
|
};
|