Commit graph

307 commits

Author SHA1 Message Date
StrikerX3 d913d6695f Add several definitions for ATAPI / SCSI data structures and constants 2018-12-08 13:55:03 -02:00
StrikerX3 1218931776 Flesh out the Packet Command protocol 2018-12-07 21:30:55 -02:00
Ivan Roberto de Oliveira 1b3eab6227
Update README.md 2018-12-07 16:50:19 -02:00
StrikerX3 00bbebde21 Build Packet protocol skeleton and implement the basics of the Packet command 2018-12-07 16:47:28 -02:00
StrikerX3 f3c1a44acf Fix typo 2018-12-07 16:45:32 -02:00
StrikerX3 cacd467043 Hide some log messages for now 2018-12-07 14:35:27 -02:00
Ivan Roberto de Oliveira 564e86d52b
Update README.md 2018-12-07 14:15:33 -02:00
StrikerX3 15bf901bd2 DMA read/write should consider total number of bytes, not sectors
With this, viXen can now load the dashboard!
2018-12-07 14:03:01 -02:00
StrikerX3 2c25197423 Iron out the kinks, part 4 2018-12-07 13:14:07 -02:00
StrikerX3 ab985d10e9 Iron out the kinks, part 3 2018-12-07 12:45:29 -02:00
StrikerX3 9c10cd1188 Iron out the kinks, part 2 2018-12-07 11:36:38 -02:00
StrikerX3 79ed453fc6 Iron out the kinks, part 1 2018-12-07 11:25:32 -02:00
StrikerX3 a88dea4b4a Convert DMA protocol commands to the new structure
Document the IATACommand interface more clearly

Make SetPIOTransferMode and SetDMATransferMode actually change the values returned by Identify Device

Temporarily disable writes to hard disk image; need to ensure it's not going to wreck the image
2018-12-07 10:54:39 -02:00
StrikerX3 ed468a9c6d WIP: Refactor ATA commands into classes
Implement protocols as base classes on top of a common interface so that command processing and usage is uniform. Commands are much easier to implement on this platform, and most of the complicated state management in ATADevice is eliminated.

Next step is to move the DMA operations out of ATADevice and have ATAChannel delegate them to the current command
2018-12-07 00:53:45 -02:00
StrikerX3 f2ec24f4be Add methods to read parameters needed by a PACKET transfer 2018-12-06 20:33:26 -02:00
StrikerX3 c6f439038c Define PACKET protocol and bits used by it 2018-12-06 20:32:51 -02:00
StrikerX3 f39cc3feaf Added dummy DVD drive stub 2018-12-06 15:39:36 -02:00
StrikerX3 3eb3d56b01 Implemented Identify PACKET Device ATA command 2018-12-06 14:52:19 -02:00
StrikerX3 db04840c6b Implement disk image write 2018-12-06 13:37:43 -02:00
StrikerX3 599d030e81 Implement basic HDD image reader
Fix BM IDE DMA writes
2018-12-06 13:23:09 -02:00
StrikerX3 c0f0f26b5e Created settings for virtual HD and DVD drives
Changed a few command line parameters and added a parameter to load a virtual hard disk image
2018-12-06 11:23:06 -02:00
StrikerX3 eff3037cd4 Implemented Initialize Device Parameters ATA command 2018-12-06 10:43:58 -02:00
StrikerX3 8f9a88acbb Finish PIO data in and out protocols
Implement Security Unlock ATA command
2018-12-06 09:52:34 -02:00
StrikerX3 3f1a12a965 Implemented IDE DMA transfers
Prefer references over pointers where applicable
2018-12-05 23:33:58 -02:00
StrikerX3 bac54bfff3 Refactor bus master IDE channels into a class
Implement worker thread for bus master IDE channels
2018-12-05 20:06:47 -02:00
StrikerX3 55b76b447c Begin implementing Read DMA ATA command 2018-12-05 18:59:00 -02:00
StrikerX3 fa2e29a7d2 Simplify ATA protocols and stub Read DMA command on ATA device class 2018-12-05 18:09:56 -02:00
StrikerX3 806d53f545 Stub Bus Master IDE commands 2018-12-05 16:43:58 -02:00
StrikerX3 472ab723b3 Don't register Host Bridge PCI BAR
This was hiding early initialization of NV2A registers
2018-12-05 16:43:35 -02:00
StrikerX3 7f993cf520 Reduce log verbosity 2018-12-05 16:42:53 -02:00
StrikerX3 213c0bac3c ATA PIO data buffer always has 512 bytes 2018-12-05 16:32:53 -02:00
StrikerX3 355e5ae3ba Added remaining BMIDE registers and implemented basic read/write functionality for them 2018-12-05 16:26:11 -02:00
StrikerX3 bf4dbe7375 Inline PCI vendor, device and revision IDs
Stub Bus Master IDE controller emulator
2018-12-05 15:43:44 -02:00
Ivan Roberto de Oliveira 1eb2565e54
Update README.md 2018-12-05 14:27:10 -02:00
Ivan Roberto de Oliveira e1158e4997
Update README.md 2018-12-05 14:26:05 -02:00
StrikerX3 dd032ea0e3 Branding changes 2018-12-05 14:09:26 -02:00
StrikerX3 4db9914dca Fix KVM I/O handling 2018-12-04 20:15:56 -08:00
StrikerX3 f9e35303ff Initialize whatever NV2A fields GCC allows 2018-12-04 20:07:11 -08:00
StrikerX3 d345a882c6 Try initializing NV2A structs again... 2018-12-04 19:56:10 -08:00
StrikerX3 42f6d1a6d7 Remove invalid #pragma pop 2018-12-05 01:53:08 -02:00
StrikerX3 77ce795e21 Fix Linux build 2018-12-04 19:51:28 -08:00
StrikerX3 d295014d8d Seems that the hard drive doesn't need to be locked
Telling the kernel that security is supported and enabled seems to be enough
2018-12-04 22:12:24 -02:00
StrikerX3 8f0aee3f41 Prepare to implement Security Unlock ATA command 2018-12-04 22:11:04 -02:00
StrikerX3 705d9f630b Initialize dummy hard drive with security lock enabled
Rename ATA driver files to reduce verbosity
2018-12-04 21:53:43 -02:00
StrikerX3 a66da84ad0 Fix breakpoint handling
Also added some disabled code for dumping the kernel and setting a hardware breakpoint
2018-12-04 21:35:22 -02:00
StrikerX3 7e39ebe360 Set error status when processing unknown ATA commands 2018-12-04 21:33:55 -02:00
StrikerX3 5c2ac93155 Fix string I/O handling with HAXM
String I/O instructions are INS/INSB/INSW/INSD and OUTS/OUTSB/OUTSW/OUTSD when prefixed with REP.

We were not filling the IO tunnel buffer properly. The INSD instruction is used to read the response of ATA commands.
2018-12-04 21:31:33 -02:00
StrikerX3 f8727b10ed Clear DRQ signal after reading a full block using the Data register
Stop responding to commands while BSY is asserted
2018-12-04 17:45:56 -02:00
StrikerX3 0d427ec030 Provide the means for a device to read a device driver's read buffer 2018-12-04 17:15:50 -02:00
StrikerX3 4ef6ba99bd Declared Identify Device data structure
Filling it with reasonable data for a hard drive in the dumy driver
2018-12-04 16:50:56 -02:00