This change brings support for a second filesystem stored in the ROM
(if there's enough space)
The romfile code is fairly local so there was no point in keeping the
files around in a4091_save_t. Now the file state is kept locally in
init_romfiles() instead.
Since not all filesystem drivers contain a resident init structure, it
is now also possible to specify a DosType that is used to register the
filesystem in filesystem.resource.
The amount of checksummed longs doesn't always equal the device blocksize / 4.
When a disk is prepared by HDInstTool it checksums 256 bytes of RDB, PART, LSEG etc
This fix was provided by Olaf Barthel @obarthel
Thanks to Jasonsbeer and MichaelD for reporting this issue
Previously we opened gadtools.library and intuition.library
unconditionally even if we wouldn't display the boot menu.
This can cause side effects, so change the code to open the
libraries only when needed.
Fixed bug on "a4091 -c" reporting Zorro III board size incorrectly
Fixed possible infinite loop waiting for 53C710 ISTAT to clear
Fixed ignore of ROM version & revision fields in ROM test
Added "-l <count>" to specify the number of test iterations to run
In CID #330976 Coverity Scan found an uninitialized pointer read. This
is because the construct that sets save is not fully understood by
Coverity. It is better to rewrite the function to pass save in as a
parameter anyways.
Verified that thwe assembler code produced is identical before and after
(with Bebbo's gcc 6.5)
When reading blocks with a specific ID (e.g. blocks that are part of
the RDB) we want to verify the checksums. But if we are reading random
blocks off the disk, they might or might not use the same checksumming
mechanism. Hence don't calculate/verify the checksum for them.
If we are not loading CDFS through the resident rt_Init code, we need to
provide our own creator name. Make it follow the conventions of the other
filesystem drivers.
- Adds support for loading a filesystem without the need for a
resident struct.
- Factor out debugging functions from the mounter code finding CDFS:
scan_filesystems --> list_filesystems & find_cdfs
- Properly Forbid/Permit when operating on FileSystemEntries
Instead of hard coding block sizes, switch from dev_scsi_inquiry()
to dev_scsi_get_drivegeometry(), because in addition to the device
type it will also let us know the block size.
The serial number was intended to reflect the version of the driver
used to build the ROM. For example when building 42.27 the serial
number should show up as 0x002a001b. Instead it showed up as 0x00020001
because the calculations were a few bits off.
You can verify this fix with the a4091 utility:
1> a4091 -c