LogicalVsPhysicalTrackCleanup: Difference between revisions
Jump to navigation
Jump to search
m (→Functions) |
mNo edit summary |
||
(One intermediate revision by the same user not shown) | |||
Line 58: | Line 58: | ||
<pre> | <pre> | ||
src/diskimage/fsimage-dxx.c: int fsimage_dxx_write_sector(disk_image_t *image, const uint8_t *buf, const disk_addr_t *dadr) | src/diskimage/fsimage-dxx.c: int fsimage_dxx_write_sector(disk_image_t *image, const uint8_t *buf, const disk_addr_t *dadr) | ||
</pre> | |||
<pre> | |||
src/drive/drive.c: drive_set_last_read(unsigned int track, unsigned int sector, uint8_t *buffer, struct diskunit_context_s *unit) | |||
calls: | |||
drive_gcr_data_writeback | |||
drive_set_half_track | |||
</pre> | |||
<pre> | |||
src/drive/drive.c: void drive_set_half_track(int num, int side, drive_t *dptr) | |||
calls: - | |||
</pre> | |||
<pre> | |||
src/drive/drive.c: void drive_gcr_data_writeback(drive_t *drive) | |||
calls: - | |||
</pre> | </pre> | ||
Line 63: | Line 80: | ||
* create G64/G71 | * create G64/G71 | ||
* create D64/D71/D82/D81/D1M/D2M/D4M | * create D64/D71/D82/D81/D1M/D2M/D4M | ||
[[Category:Developer]] | |||
[[Category:TODO]] |
Latest revision as of 18:30, 23 March 2023
In some part of the code Logical Track numbers are used, when it should be physical tracks instead. (This mostly applies to 1571 and 8250 images and drives - where the DOS would use logical track numbers > 35 to access the second disk side). this makes it kindof hard an annoying to add support for images that use the upper tracks (35-40) in a generic way.
This page is used for notes and keeping track of some things while i am trying to get this worked out and under control Gpz (talk) 22:09, 14 October 2021 (CEST)
Functions
src/diskimage/diskimage.c: disk_image_speed_map(unsigned int format, unsigned int track) - input: logical track returns: speedzone for given track calls: - called by: disk_image_sector_per_track(unsigned int format, unsigned int track) - input not checked for 1571/d71, so either physical or logical returns: number of sectors for a given track disk_image_raw_track_size(unsigned int format, unsigned int track) - input: logical track returns: number of GCR bytes on a track disk_image_gap_size(unsigned int format, unsigned int track) - input: logical track returns: gap size for given track src/diskimage/fsimage-create.c:fsimage_create_gcr(disk_image_t *image) src/diskimage/fsimage-p64.c:fsimage_p64_read_half_track(const disk_image_t *image, unsigned int half_track, disk_track_t *raw) src/diskimage/fsimage-gcr.c:fsimage_gcr_write_half_track(disk_image_t *image, unsigned int half_track, const disk_track_t *raw)
src/diskimage/fsimage-check.c: int fsimage_check_sector(const disk_image_t *image, unsigned int track, unsigned int sector) returns: offset in sectors in a image for track/sector or -1 on error calls: disk_image_sector_per_track(unsigned int format, unsigned int track) - input not checked for 1571/d71, so either physical or logical returns: number of sectors for a given track called by: src/diskimage/diskimage.c: disk_image_check_sector(const disk_image_t *image, unsigned int track, unsigned int sector) returns: offset in sectors in a image for track/sector or -1 on error - ONLY IF (image->device == DISK_IMAGE_DEVICE_FS)
src/diskimage/fsimage-create.c: fsimage_create_gcr(disk_image_t *image) calls: disk_image_speed_map(unsigned int format, unsigned int track) - input: logical track disk_image_gap_size(unsigned int format, unsigned int track) - input: logical track disk_image_header_gap_size(unsigned int format, unsigned int track) - input: track (not used) disk_image_sync_size(unsigned int format, unsigned int track) - input: track (not used) disk_image_raw_track_size(unsigned int format, unsigned int track) - input: logical track disk_image_sector_per_track(unsigned int format, unsigned int track) - input not checked for 1571/d71, so either physical or logical
src/diskimage/fsimage-dxx.c: int fsimage_dxx_write_half_track(disk_image_t *image, unsigned int half_track, const disk_track_t *raw)
src/diskimage/fsimage-dxx.c: int fsimage_read_dxx_image(const disk_image_t *image)
src/diskimage/fsimage-dxx.c: int fsimage_dxx_read_sector(const disk_image_t *image, uint8_t *buf, const disk_addr_t *dadr)
src/diskimage/fsimage-dxx.c: int fsimage_dxx_write_sector(disk_image_t *image, const uint8_t *buf, const disk_addr_t *dadr)
src/drive/drive.c: drive_set_last_read(unsigned int track, unsigned int sector, uint8_t *buffer, struct diskunit_context_s *unit) calls: drive_gcr_data_writeback drive_set_half_track
src/drive/drive.c: void drive_set_half_track(int num, int side, drive_t *dptr) calls: -
src/drive/drive.c: void drive_gcr_data_writeback(drive_t *drive) calls: -
Things to test
- create G64/G71
- create D64/D71/D82/D81/D1M/D2M/D4M