mirror of
https://github.com/jamessanford/kegs.git
synced 2024-09-11 12:55:04 +00:00
117 lines
2.1 KiB
C
117 lines
2.1 KiB
C
/****************************************************************/
|
|
/* Apple //gs emulator */
|
|
/* Copyright 1996 Kent Dickey */
|
|
/* */
|
|
/* This code may not be used in a commercial product */
|
|
/* without prior written permission of the author. */
|
|
/* */
|
|
/* You may freely distribute this code. */
|
|
/* */
|
|
/* You can contact the author at kentd@cup.hp.com. */
|
|
/* HP has nothing to do with this software. */
|
|
/****************************************************************/
|
|
|
|
#ifdef INCLUDE_RCSID_C
|
|
const char rcsid_defc_h[] = "@(#)$Id: prodos.h,v 1.4 2002/11/19 07:49:31 kadickey Exp $";
|
|
#endif
|
|
|
|
|
|
typedef struct l2byte_st L2byte;
|
|
struct l2byte_st {
|
|
byte low;
|
|
byte hi;
|
|
};
|
|
|
|
typedef struct l3byte_st L3byte;
|
|
struct l3byte_st {
|
|
byte low;
|
|
byte hi;
|
|
byte higher;
|
|
};
|
|
|
|
typedef L2byte Block;
|
|
|
|
typedef struct pro_time_st Pro_time;
|
|
struct pro_time_st {
|
|
byte times[4];
|
|
};
|
|
|
|
typedef struct file_entry_st File_entry;
|
|
struct file_entry_st {
|
|
byte storage_type_name_len;
|
|
byte file_name[15];
|
|
/* 0x10 */
|
|
byte file_type;
|
|
Block key_pointer;
|
|
/* 0x13 */
|
|
L2byte blocks_used;
|
|
/* 0x15 */
|
|
L3byte eof;
|
|
/* 0x18 */
|
|
Pro_time creation_time;
|
|
/* 0x1c */
|
|
byte version;
|
|
byte min_version;
|
|
/* 0x1e */
|
|
byte access;
|
|
/* 0x1f */
|
|
L2byte aux_type;
|
|
/* 0x21 */
|
|
Pro_time last_mod;
|
|
/* 0x25 */
|
|
Block header_pointer;
|
|
};
|
|
|
|
STRUCT(Vol_hdr) {
|
|
/* 0x4 */
|
|
byte storage_type_name_len;
|
|
/* 0x5 */
|
|
byte vol_name[15];
|
|
/* 0x14 */
|
|
byte res1[8];
|
|
/* 0x1c */
|
|
Pro_time creation_time;
|
|
/* 0x20 */
|
|
byte version;
|
|
byte min_version;
|
|
byte access;
|
|
byte entry_length;
|
|
/* 0x24 */
|
|
byte entries_per_block;
|
|
L2byte file_count;
|
|
/* 0x27 */
|
|
Block bit_map;
|
|
/* 0x29 */
|
|
L2byte total_blocks;
|
|
};
|
|
|
|
typedef struct directory_st Directory;
|
|
struct directory_st {
|
|
Block prev_blk;
|
|
Block next_blk;
|
|
File_entry file_entries[13];
|
|
};
|
|
|
|
STRUCT(ProDisk) {
|
|
int fd;
|
|
int total_blocks;
|
|
int size_bitmap_blocks;
|
|
int disk_bytes_left;
|
|
|
|
int bitmap_bytes;
|
|
int bitmap_cur_pos;
|
|
byte *bitmap_ptr;
|
|
|
|
int file_open;
|
|
File_entry *file_ptr;
|
|
int dir_blk_num;
|
|
int ind_blk_num;
|
|
int master_ind_blk_num;
|
|
byte dir_blk_data[512];
|
|
byte ind_blk_data[512];
|
|
byte master_ind_blk_data[512];
|
|
};
|
|
|
|
|
|
#include "prodos_protos.h"
|