Commit graph

12 commits

Author SHA1 Message Date
Howard M. Harte
d47216212c sim_imd: Resolve warnings. 2023-04-01 07:01:08 -07:00
Howard M. Harte
c1fded8a9d sim_imd: Reconcile license with open-simh. 2022-10-09 09:10:27 -07:00
Tony Nicholson
e1ce9f4f70 sim_imd: Check for EOF when reading IMD track headers
The recent change to check that the IMD file track header record is 5
bytes introduced a problem with the end-of-file triggering an open file
error - instead of the previous behaviour where the number of bytes in
the track header was ignored and end-of-file was checked.

I noticed this after fetching and compiling the latest simh altairz80 - it
was refusing to my mount floppy disk IMD image files (which I had made
from 8-inch floppies back in 2006).

```
maxi:s100 tony$ altairz80 cpm3bk.ini

Altair 8800 (Z80) simulator V4.0-0 Current        simh git commit id: d3f1ee09
Console escape is CTRL-\
I8272: IMD disk corrupt.
/Users/tony/s100/cpm3bk.ini-58> att disk1a0 /Users/tony/s100/C3BKSIMH.IMD
File open error
```

Looking at the commit history, I saw the change by Howard Harte to
sim_imd.c to "Resolve CID 1502448, 1502460" - presumably to fix the
call to sim_fread() that was not checking the returned result.
Howard's "fix" broke the parsing of the IMD file sector headers by
not checking for an end-of-file condition (at the end of file it
would read 0 bytes and this was now treated as a fatal error - whereas
the old code had a check for end-of-file after the call to sim_fread()).

This commit now detects end-of-file correctly, as well as verifying
the track header is 5 bytes.
2022-05-01 08:01:18 +10:00
Howard M. Harte
3b06ed7ec9 sim_imd: Resolve CID 1502448, 1502460. 2022-03-19 08:47:32 -07:00
Howard M. Harte
10c7e50f1c sim_imd: Resolve coverity issues. 2022-02-19 13:25:50 -08:00
Mark Pizzolato
b2a63a5678 IMD: Remove need for -DUSE_SIM_IMD in preparation for wider use of sim_imd 2021-01-18 10:44:33 -08:00
Howard M. Harte
313d71b73e sim_imd: Properly calculate IMD sectsize.
The ImageDisk sectsize field was incorrectly set to the number of
bytes in the sector, when it should be an index as follows:

00 =  128 bytes/sector
01 =  256 bytes/sector
02 =  512 bytes/sector
03 = 1024 bytes/sector
04 = 2048 bytes/sector
05 = 4096 bytes/sector
06 = 8192 bytes/sector

Tested disk formatting on MS-DOS 1.25, Cromemco CP/M 2.2,
Cromemco CDOS, OASIS 5.6.
2020-12-13 15:26:04 -08:00
Mark Pizzolato
267f2548a6 IMD: Fix compiler warning in sim_debug statement 2020-11-13 21:11:19 -08:00
Howard M. Harte
78d6650acd sim_imd: clean up debug output. 2020-11-07 19:58:56 +00:00
Peter Schorn
6c84387ec0 AltairZ80: Fix error handling of bad IMD disks and sector size computation 2020-02-18 11:55:29 +01:00
Mark Pizzolato
5531ccb175 ALL: Massive 'const' cleanup
These changes facilitate more robust parameter type checking and helps
to identify unexpected coding errors.

Most simulators can now also be compiled with a C++ compiler without
warnings.

Additionally, these changes have also been configured to facilitate easier
backporting of simulator and device simulation modules to run under the
simh v3.9+ SCP framework.
2016-05-15 15:25:33 -07:00
Mark Pizzolato
defe5f07d9 AltairZ80: Promote sim_imd.c to a top level simh library to be used as needed by various simulators 2014-09-16 11:29:19 -07:00
Renamed from AltairZ80/sim_imd.c (Browse further)