News:

Printed Amstrad Addict magazine announced, check it out here!

Main Menu

HDOS drivers for SymbiFace-II/X-MASS

Started by rpalmer, 13:22, 20 March 16

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

Executioner

Quote from: rpalmer on 01:30, 10 April 16
With the differences in the emulation to the hardware, i will continue with WinAPE, however I have been assisted by audronic and it seems X-MASS does not play ball either.

The WinAPE emulation was developed to work with the SymbOS code originally. If there's something not emulated correctly that needs to be, let me know.

rpalmer

Executioner,

The basic issue i have found is that the if the symbiface-II emulation matches the real hardware then the real Hardware is also faulty (as by comments stating that the real hardware does not match WinAPE developed version of software).

The protocol for PIO mode is shown on Page 260 and 264 of the previously attached ATA specification. it basically should be

Wait for current device to not be busy (BSY=0)
Select new device (master/slave)
Wait for selected device to not be busy and ready (BSY=0/RDY=1)*
Issue command parameters
Issue command
wait for 'Data Request' (BSY=0/DRQ=1)
send/receive data
check if communication error
if error then exit with error
exit with no error

* is where the interface issue appears to be (sometimes BSY = 1)

Assuming only 1 sector is requested to be processed.

The other thing i found is the command (&EC) to get device geometry appears to not work and this makes the all software reliant on the media being preformatted to have the geometry within key parts of the first sector (e.g MBR or Boot Sector).

The other thing i noticed in the wiki S/W is that writing to the device is doing 'INC B' followed by 'OUTI', yet to read its 'INI' followed by 'INC B'. Why is this so, since for write the 'INC B' no longer point to the 'Data Register' for I/O when 'OUTI" is executed.

rpalmer

rpalmer

"The basic issue i have found is that the if the symbiface-II emulation matches the real hardware then the real Hardware is also faulty (as by comments stating that the real hardware does not match WinAPE developed version of software)."

I should have said

The basic issue i have found is that the if the symbiface-II emulation matches the real hardware then the real Hardware is also faulty (as by comments stating that the real hardware does not match WinAPE developed version of software according to ATA standards).

rpalmer

HAL6128

#53
I wouldn't say faulty, more it follows a pragmatic and CPC oriented approach. Therefore a lot of ATA stuff is not necessary. Real hardware with its IDE Controller instaed yes but without necessity / usability.
What I have read in the forum is that Prodatron programed the basic drivers for SymbOS on real hardware (a Symbiface), the rest (most stuff) was written with WinApe Assembler.
...proudly supported Schnapps Demo, Pentomino and NQ-Music-Disc with GFX

netmercer

Quote from: rpalmer on 13:37, 10 April 16

The other thing i noticed in the wiki S/W is that writing to the device is doing 'INC B' followed by 'OUTI', yet to read its 'INI' followed by 'INC B'. Why is this so, since for write the 'INC B' no longer point to the 'Data Register' for I/O when 'OUTI" is executed.

rpalmer

Hi,
the reason for this behavior is the microcode of the "OUTI" and "INI" instruction inside the Z80. In both cases register B is originally allotted to serve as counter, not as address register.
In the case of "OUTI" the Z80 first decrements B and puts the contents of 16Bit-register BC on the address bus afterwards. Therefore you have to increment B before "OUTI".
In the case of "INI" the Z80 first puts the contents of 16Bit-register BC on the address bus and decrements B afterwards. That's all.




rpalmer

netmercer,

The OUTI microcode actually outputs data to the port first the decrements both B followed by incrementing  HL (see Z80 doco attached).

rpalmer

rpalmer

netmercer,

I just found doco to support your statement, I was WRONG I assume what i posted was the correct understanding of the OUTI instruction according to symbolic description.

rpalmer

gerald


rpalmer

gerald,

Yes I agree it was put to rest and yes I AGREE I GOT IT WRONG and have learn my ways on this issue.

But as for the SF2 issues between WinAPE and the real deal, it is difficult to articulate the problem(s) with out the real deal to compare against. This is why I would like as many people as possible to try the drivers and test software to see if I can make a version work in WinAPE and on the real kit.

rpalmer

Executioner

Quote from: rpalmer on 13:37, 10 April 16
Wait for current device to not be busy (BSY=0)
Select new device (master/slave)
Wait for selected device to not be busy and ready (BSY=0/RDY=1)*
Issue command parameters
Issue command

What does "Select new device (master/slave)" entail? Sending which commands? I can't see any obvious code leaving BSY=1

rpalmer

executioner,

see attatched driver for SF2 (routine: SF2_SendCommand).

rpalmer

Powered by SMFPacks Menu Editor Mod