Commit graph

343 commits

Author SHA1 Message Date
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
StrikerX3
836c30a8b2 Initial implementation of ATA device drivers
ATA device drivers act as virtual devices attached to ATA channels. They typically interact with real hardware by accessing a hard drive image, an XISO, a host DVD drive or similar methods.

Implemented two ATA device drivers:
- Null: absence of a device (cable disconnected)
- Dummy: a fake, empty hard drive (still incomplete; mostly to aid development)

Added ATA device drivers to the Xbox class. They need to be made configurable later.

Implemented the command processing part of the Identify Device command. Still need to implement the data buffer and reading from the buffer.

Allow 8-bit and 32-bit reads from and writes to the Data register

Reads from various command registers will now return 0 if there is no device attached to the selected port. Only the Status register is valid in this case. Writes go through but are largely ignored.
2018-12-04 14:33:30 -02:00
StrikerX3
bf4637f268 Introduced ATADevice and moved Set Features to it
Moved ATA registers into a separate struct, embedded into ATAChannel and referenced by ATADevices

Stubbed Identify Device command

Converted ATAChannel to a class and improved initialization of ATA classes
2018-12-03 23:38:59 -02:00
StrikerX3
9e457bfe57 Implement our first command! 2018-12-03 22:34:18 -02:00
StrikerX3
6de45364a7 ATA controller registers are not part of devices 2018-12-03 21:54:10 -02:00
StrikerX3
0f074a7070 Stub our first ATA command 2018-12-03 21:41:59 -02:00
StrikerX3
60d3db0cde Devices that use IRQ should use the IRQHandler base type instead of the i8259 2018-12-03 20:37:19 -02:00
StrikerX3
2b59883eae Some fixes 2018-12-03 20:04:40 -02:00
StrikerX3
7d51dd13c1 Refine ATA channel methods
Moved files around
2018-12-03 19:56:13 -02:00
StrikerX3
fa769c1212 Restructure ATA implementation 2018-12-03 19:33:57 -02:00
StrikerX3
7be0a89e32 IRQ assertion level is better represented by a bool
Improve documentation on ATA emulation
2018-12-03 18:55:56 -02:00
StrikerX3
685c764f2e Fix compilation error
Namespaces are annoying...
2018-12-03 17:14:22 -02:00
StrikerX3
db01ec0263 Begin structuring the ATA emulator 2018-12-03 16:27:17 -02:00
StrikerX3
9d0c3c8518 Stub ATA device 2018-12-03 12:56:41 -02:00
StrikerX3
26d6f9d529 Write 0 on unimplemented reads 2018-12-03 12:56:33 -02:00