Commit Graph

21 Commits

Author SHA1 Message Date
OBattler
22c3a74e3b The SCSI data buffer is now zeroed before being allocated, MODE SELECT data is therefore no longer lost in transit;
SCSI DMA writes (for MODE SELECT) now correctly use InitLength instead of request_length when bus type is SCSI;
Fixed MODE SELECT page saving;
CD Audio volume is now correctly initialized on card initialization for all Sound Blaster variants, fixes CD Audio being muted when booting without the Sound Blaster initialization program;
Brought the Sound Blaster variants back to a sane sound volume but still louder than the old quietness;
Moved SCSI adapter initialization to before sound card initialization, fixes DOS SCSI CD-ROM driver hangs under some conditions.
2017-02-04 06:53:46 +01:00
OBattler
10503674eb All MODE SENSE and MODE SELECT commands now support the block descriptor when a CD-ROM drive is set to SCSI;
Fixed MODE SELECT behavior with ATAPI;
Removed excess PIIX logging;
Fixed and improved the CD Audio buffer code in sound.c.
2017-01-27 23:03:20 +01:00
OBattler
d4afd7c2c3 Added some things that were missing from the DMA controller;
Fixed a link-breaking bug in cdrom.c;
The AHA-154x now supports commands 0x28 (GET EXTENDED BIOS INFO) and 0x29 (UNLOCK MAILBOX) and no longer reports a firmware revision with scatter/gather bug;
The BusLogic now supports command 0x20 (RESET);
Fixed the GPIO register mapping on the National Semiconductors PC87306 Super I/O chip.
2017-01-26 17:20:55 +01:00
OBattler
89840c7fc9 CD-ROM READ SUBCHANNEL command now does not pass through if requested data type is 1 (current position), instead the current position held by the emulator is returned;
CD-ROM READ SUBCHANNEL command now respects the allocated length set in the CDB.
2017-01-25 06:58:40 +01:00
OBattler
6f705abd61 Changed the default pass through transfer length for non-media access commands to 65534 bytes instead of 8192, just in case someone tries to use a disc with an abnormal number of tracks. 2017-01-24 20:32:55 +01:00
OBattler
f2c8591220 The CD-ROM READ CAPACITY, READ SUBCHANNEL, READ TOC, READ DISC INFORMATION, and READ TRACK INFORMATION commands now return a sane length if the length from pass through is 8192 bytes. 2017-01-24 20:25:58 +01:00
OBattler
bc5ac4a699 Reverted Direct3D to 2048x2048 buffer and suppressed the EGA/(S)VGA overscan, if enabled, in 2048x modes, fixes Direct3D freezes;
Improved the BusLogic incoming mailbox code;
The BusLogic callback is now three-phases and outgoing mailbox interrupts are emulated correctly;
Fixed the CD-ROM command READ DISC INFORMATION (0x51), fixes NetBSD crashing 86Box with segmentation fault when using the AHA-154x;
Added the CD-ROM command PAUSE/RESUME ALT (0xC2).
2017-01-24 01:03:23 +01:00
OBattler
754e8ff88f SCSI incoming mailbox now correctly also rewrites the CCB up to the CDB even if the status is CHECK CONDITION, fixes CD-ROM disc changes when using SCSI;
Previous CD-ROM sense is now correctly cleared when a REQUEST SENSE command is performed, fixes detection of disc change after setting the drive to empty first regardless of what bus is used for the CD-ROM.
2017-01-21 06:21:46 +01:00
OBattler
1aa37bfc27 REQUEST SENSE now correctly delays the reporting of UNIT ATTENTION if another error is pending, unless the error is not ready and the REQUEST SENSE is a standalone command;
The SCSI-specific auto-REQUEST SENSE now no longer advances UNIT ATTENTION phase, making sure the next command will report UNIT ATTENTION.
2017-01-21 03:03:46 +01:00
OBattler
6a396b4bcb Fixed the last compile-breaking error, for really this time. 2017-01-21 02:02:35 +01:00
OBattler
a24020efcd Fixed the last compile-breaking error. 2017-01-21 02:00:34 +01:00
OBattler
4486926b6d Fixed a compile-breaking error. 2017-01-21 01:58:48 +01:00
OBattler
45183ea026 SCSI auto-sense is now done as an actual pseudo-execution of the REQUEST SENSE command. 2017-01-21 01:48:55 +01:00
OBattler
13e85cc7a6 Fixed a compile-breaking error. 2017-01-21 01:19:49 +01:00
OBattler
2e15aca382 The error code in cdrom.c now logs errors;
Illegal LUN is now invalid LUN and 05/25/00.
2017-01-21 01:17:49 +01:00
OBattler
3f612ab71a IDE dword reads and writes reverted to original operation, fixes the last hard disk problems;
ATAPI CD-ROM word reads no longer incorrectly discard the upper 16 bits, fixes the CD-ROM problems;
Significantly rewrote parts of the AHA-154x and BusLogic emulation, NT 3.1 RTM and MS-DOS drivers now works correctly;
The function in cdrom.c to read data blocks from the disc now correctly advances the position of the sector to read in non-passthrough mode, fixes multiblock reads from directly mounted ISO's;
Both ATAPI and SCSI now always check for Unit Attention and Not Ready on command execution.
2017-01-20 23:53:19 +01:00
OBattler
0548d8f9c8 Essentially reverted 8-bit IDE data reads and writes to old operation, fixes the hard disk bug;
SCSI LUN is now selectable for the CD-ROM drives;
Made sure every BusLogic RequestSetup ends in a StartMailbox sooner or later, fixes freezes with the DOS BusLogic drivers;
Commented out execess logging from mem.c;
Applied the mainline PCem commit that fixes the Bahamas64 on some boards.
2017-01-18 21:51:03 +01:00
OBattler
6b86549b7e Modified empty IDE channel handling, should hopefully reduce problems;
Fixed several ATAPI CD-ROM bugs;
Added some missing CPL override checks to the MMU translate functions;
Tertiary and quaternary IDE controllers are now automatically disabled if not a single device is attached to them;
Changed sleep time on compile from 10 seconds to 2 seconds.
2017-01-17 19:41:42 +01:00
OBattler
082c4e9ff8 Fixed some compile-breaking errors. 2017-01-17 00:04:49 +01:00
OBattler
7e54cc4436 Two instances of the IDE code setting the error register did not set it in the cdrom struct if drive is CD-ROM, now they do, fixes CD-ROM booting on the Intel Advanced/ATX and possibly other things;
Fixed IDE and ATAPI 8-bit data reads and writes by rewriting the IDE and CD-ROM PIO data read and write code so that the base code is now 8-bit;
Added some compiler directives that if set, will enable togglable logging and log breakpoints;
Empty IDE channels now always report a status of 0x10 rather than 0x20, and do it on port 3F6h/376h/36Eh/3EEh too, fixes OAKCDROM.SYS infinite loop when hitting an empty IDE channel.
2017-01-17 00:01:59 +01:00
OBattler
4f7fd84229 Overhauled and unified CD-ROM emulation;
Four CD-ROM drives are now emulated;
ATAPI DMA is now emulated;
Unified CD-ROM pass through to host drive handling;
Applied all (applicable) mainline PCem commits.
2017-01-16 01:49:19 +01:00