cbmimage
Loading...
Searching...
No Matches
cbmimage_image_settings_s Struct Reference

Image specific settings for all types of images . More...

#include <internal.h>

Collaboration diagram for cbmimage_image_settings_s:

Public Attributes

cbmimage_fileimage_functions fct
 functions for image type specific operations
 
cbmimage_image_settingsnext_settings
 back-pointer for nested images (directorys, partitions)
 
cbmimage_fileimageimage
 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_blockaccessorinfo
 
cbmimage_fatfat
 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_selectorbam
 the location of the BAM.
 
cbmimage_i_bam_counter_selectorbam_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
 

Detailed Description

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.

Member Data Documentation

◆ dir_tracks

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.

◆ has_super_sidesector

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)

◆ info

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.

◆ is_partition_table

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)

◆ maxsectors

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.

◆ subdir_data_offset

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.

◆ subdir_global_addressing

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.

◆ subdir_relative_addressing

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.


The documentation for this struct was generated from the following file: