|
cbmimage
|
Image specific settings for all types of images . More...
#include <internal.h>

Public Attributes | ||
| cbmimage_fileimage_functions | fct | |
| functions for image type specific operations | ||
| cbmimage_image_settings * | next_settings | |
| back-pointer for nested images (directorys, partitions) | ||
| cbmimage_fileimage * | image | |
| pointer back to the cbmimage_fileimage that contains a pointer to here | ||
| cbmimage_imagetype | imagetype | |
| the file type of the image | ||
| const unsigned char * | imagetype_name | |
| the name (user readable text) for the file type of the image | ||
| cbmimage_blockaccessor * | info | |
| cbmimage_fat * | fat | |
| if there is a calculated FAT, this points to it. If there is none, it is NUL. | ||
| uint8_t | info_offset_diskname | |
| the offset of the diskname that is stored in the info block | ||
| cbmimage_blockaddress | dir | |
| address of the (first) directory block | ||
| uint8_t | maxtracks | |
| maximum number of tracks (e.g. 35 if track go from 1 to 35) | ||
| uint16_t | maxsectors | |
| uint16_t | bytes_in_block | |
| the number of bytes in a block | ||
| uint8_t | dir_tracks [2] | |
| cbmimage_blockaddress | lastblock | |
| address of the last block on this image | ||
| int | has_super_sidesector | |
| size_t | bam_count | |
| the number of bam and bam_counter entries | ||
| cbmimage_i_bam_selector * | bam | |
| the location of the BAM. | ||
| cbmimage_i_bam_counter_selector * | bam_counter | |
| the location of the BAM counter. | ||
| size_t | subdir_data_offset | |
| data offset for subdir | ||
| cbmimage_blockaddress | block_subdir_first | |
| in case of an active sub-dir / sub-partition, this marks the start block of that partition | ||
| cbmimage_blockaddress | block_subdir_last | |
| in case of an active sub-dir / sub-partition, this marks the last block of that partition | ||
| unsigned int | subdir_global_addressing: 1 | |
| flag if there is an active subdir with absolute addresses | ||
| unsigned int | subdir_relative_addressing: 1 | |
| flag if there is an active subdir with relative addresses | ||
| unsigned int | is_partition_table: 1 | |
| Define if the current "partition" is the partition table. | ||
| unsigned int | is_geos: 1 | |
| set if this is a GEOS disk | ||
| cbmimage_blockaddress | geos_border | |
| block of the GEOS border block. | ||
| union { | ||
| cbmimage_i_d40_d64_d71_image_settings d40_d64_d71 | ||
| image specific settnigs for D64, D71 and D40 files | ||
| cbmimage_i_d81_image_settings d81 | ||
| image specific settnigs for D81 files | ||
| cbmimage_i_d80_d82_image_settings d80_d82 | ||
| image specific settnigs for D80 and D82 files | ||
| cbmimage_i_d1m_d2m_d4m_image_settings d1m_d2m_d4m | ||
| image specific settnigs for D1M, D2M and D4M files | ||
| cbmimage_i_dnp_image_settings dnp | ||
| image specific settnigs for DNP (CMD native partition) files | ||
| }; | ||
| image specific settings | ||
Image specific settings for all types of images .
this type contains data that is specific to each image type, but that is needed from all types.
This type is subject to change and not part of the API.
| uint8_t cbmimage_image_settings_s::dir_tracks[2] |
the track(s) where the directory is located. If there is only 1 track, the other must be 0.
The tracks must be numerically sorted, filling the remaining entries with a 0.
| int cbmimage_image_settings_s::has_super_sidesector |
0 if side-sector blocks are normal side-sector blocks
1 if there is a super side-sector block instead (i.e. 1581)
| cbmimage_blockaccessor* cbmimage_image_settings_s::info |
accessor for the info block.
On some images (e.g., D64, D71 and D40), this is identical to the BAM block.
On others, it is not.
| unsigned int cbmimage_image_settings_s::is_partition_table |
Define if the current "partition" is the partition table.
For partitions (CMD FD2000, FD4000), the partition table is handled as a directory. Thus, the directory processing functions must know if they handle the partition table (== this is set to 1) or not (== 0)
| uint16_t cbmimage_image_settings_s::maxsectors |
maximum number of sectors (e.g. 21 if sectors go from 0 to 20). Note that the number of sectors in a specific track can be lower than this.
| size_t cbmimage_image_settings_s::subdir_data_offset |
data offset for subdir
For subdirs/partitions that are handled as part of an absolute section on the image (e.g., FD2000/FD4000 D64, D71 or D81 partitions), this offset is added in order to get the address of a block in the partition.
If there is no subdir or no subdir is active, this must be 0.
| unsigned int cbmimage_image_settings_s::subdir_global_addressing |
flag if there is an active subdir with absolute addresses
If this is 1, then subdirs/partitions are processed with absolute addresses (1581 style). That is: If the subdir starts at 3/0, then in the subdir, this block is named 3/0 and the link to the next block is 3/1.
If no subdir/partition is active, then this must be 0.
| unsigned int cbmimage_image_settings_s::subdir_relative_addressing |
flag if there is an active subdir with relative addresses
If this is != 0, there is an active subdir/partition that is processed with relative addresses (CMD Fdx000 style). That is: If the subdir starts at 3/0, then in the subdir, this block is named 1/0 and the link to the next block is 1/1.
If no subdir/partition is active, this must be 0.