Disc Error 20/21/23 and SATA->IDE support

Arc/RPCs, peripherals, RISCOS operating system & ARM kit eg GP2x, BeagleBoard
sirbod
Posts: 742
Joined: Mon Apr 09, 2012 8:44 am
Location: Essex
Contact:

Re: Disc Error 20/21/23 and SATA->IDE support

Postby sirbod » Fri Nov 24, 2017 9:13 pm

danielj wrote:Can we not just use ADFS from 3.19 and patch that?

It's versioned 2.68 and ADFSUtils isn't present, so yes it should be possible.

EDIT: A pre-patched version is attached to the OP

sirbod
Posts: 742
Joined: Mon Apr 09, 2012 8:44 am
Location: Essex
Contact:

Re: Disc Error 20/21/23 and SATA->IDE support

Postby sirbod » Sat Nov 25, 2017 6:47 am

I've had a quick look at ADFSUtils from RISC OS 3.11. Its a specific patcher for ADFS 2.67 in RISC OS 3.11 and as Jeffrey has pointed out, will only patch ADFS if its the ROM version as it checks for the Module being at a specific address.

It hijacks the floppy interrupt device (device 12) and passes the interrupts onto ADFS in all cases, except when there's one specific value in one of ADFS's workspace values. The bug introduced in ADFS 2.67 that was patched by ADFSUtils was a lock that could occur when accessing floppies when ADFSBuffers<8, so very likely a buffer overrun bug.

There's no equivalent patcher pre RISC OS 3.10 and I'm not certain if a version of ADFSUtils was released for RISC OS 3.10. The issue pre RISC OS 3.10 that was fixed in ADFS 2.67 was a FileCore in use error occurring if floppies were removed before being dismounted when ADFSBuffers>0.

In short ADFSBuffers is an issue if you're using floppies pre RISC OS 3.11 and ADFSUtils will only live patch ADFS 2.67 in the RISC OS 3.11 ROM. There is however another bug that was introduced in RISC OS 3.0 on the A5000, which causes HD corruption if ADFSBuffer>0.

This highlights an issue with ADFFS, as it doesn't RMReInit ADFSUtils, after it's RMReInit'd ADFS, meaning the ADFSBuffers bug is probably being re-introduced when ADFFS is loaded on RISC OS 3.11. I'd best get that fixed for the next release :oops:

User avatar
danielj
Posts: 5367
Joined: Thu Oct 02, 2008 4:51 pm
Location: Manchester

Re: Disc Error 20/21/23 and SATA->IDE support

Postby danielj » Sat Nov 25, 2017 7:55 am

=D>
Really great work on this Jon :) It will also bring down the price of 8-bit IDE minipodules :D

Is "re-rolling" the OS for burning onto new ROMs fairly straightforward? It looks like it needs to go onto 27c800s (I think the Amiga community use these reasonably frequently, and they seem to be reasonably available).

d.

sirbod
Posts: 742
Joined: Mon Apr 09, 2012 8:44 am
Location: Essex
Contact:

Re: Disc Error 20/21/23 and SATA->IDE support

Postby sirbod » Sat Nov 25, 2017 11:00 am

danielj wrote:=D>
Really great work on this Jon :) It will also bring down the price of 8-bit IDE minipodules :D

If there's one thing that gets my goat up, it's profiteering on the need for 3rd party IDE modules and mouse/keyboard adapters! This is really my main drive behind resolving these issues. On the keyboard/mouse adapter front, I have designed boards based on other designs and purchased bulk parts to make them, I just haven't had the time to test the design or look into possible SMD manufacturing instead. I could really use someone to come on board with me to get that moving.
danielj wrote:Is "re-rolling" the OS for burning onto new ROMs fairly straightforward? It looks like it needs to go onto 27c800s (I think the Amiga community use these reasonably frequently, and they seem to be reasonably available).

Spooky, I've been up since 5am compiling a post on just this very subject.

sirbod
Posts: 742
Joined: Mon Apr 09, 2012 8:44 am
Location: Essex
Contact:

Re: Disc Error 20/21/23 and SATA->IDE support

Postby sirbod » Thu Nov 30, 2017 8:38 am

Can I assume from the one person that's downloaded the pre-patched ADFS268, that all the SD/CF compatibility issues pre RiscPC are now resolved?

Can I also presume that Disc Error 23 does not occur on A7000/RiscPC, meaning all the compatibility issues are resolved by Jeffrey's beta ROMpatch, or the patcher in the OP? Jeffrey's updated ROMpatch should be used in preference, as it hangs off TickerV instead of stalling the CPU.

As Jeffrey has also pointed out, the Disc Error 20 fix has now gone into RISC OS 5, so A7000/RiscPC/Iyonix running the latest nightly build should have no compatibility issues.

All of which just leaves Disc Error 21 to resolve? ie specifically SATA->IDE adapters and any SD adapter or CF that doesn't control -IOCS16. This will entail a hardware solution, the details of which have yet to be worked out.

User avatar
danielj
Posts: 5367
Joined: Thu Oct 02, 2008 4:51 pm
Location: Manchester

Re: Disc Error 20/21/23 and SATA->IDE support

Postby danielj » Thu Nov 30, 2017 9:17 am

Let me run some tests on my a3020 over the weekend. I believe that's not listening to the line...

d.

sirbod
Posts: 742
Joined: Mon Apr 09, 2012 8:44 am
Location: Essex
Contact:

Re: Disc Error 20/21/23 and SATA->IDE support

Postby sirbod » Thu Nov 30, 2017 10:30 am

I've attached an updated ADFS 2.68 as the previous version was missing all of its * commands.

lcww1
Posts: 23
Joined: Wed Mar 15, 2017 11:16 pm

Re: Disc Error 20/21/23 and SATA->IDE support

Postby lcww1 » Thu Nov 30, 2017 8:35 pm

This is really fantastic news - I’ll be very glad to test out the updated ADFS over the weekend - and many thanks for all your work on RO3.11, it’s much appreciated

lcww1
Posts: 23
Joined: Wed Mar 15, 2017 11:16 pm

Re: Disc Error 20/21/23 and SATA->IDE support

Postby lcww1 » Sun Dec 03, 2017 10:03 pm

sirbod wrote:Can I assume from the one person that's downloaded the pre-patched ADFS268, that all the SD/CF compatibility issues pre RiscPC are now resolved?


I've tested ADFS268 on my A3020 this evening - I can confirm that this modified ADFS is working nicely with all the CF cards that I've got, including some *inexpensive* fleabay 512Mb Cisco CF cards that I could never previously get to work on any RISC OS system. I've also tested the following CF cards in the A3020 with ADFS268: a pair of Sandisk 512Mb cards, a Lexar Platinum 40x 512Mb, and a Transcend 80x 512Mb - all working, though my tests have not been exhaustive. In the case of the Cisco, and Transcend cards, these previously failed with Disc error 23, but ADFS268 has fixed this problem.

With ADFS268, the A3020 has been happily running two CF cards, both attached to the internal IDE connector, as master and slave, in a dual CF card to IDE adapter.

Many thanks again to sirbod for this great work! =D>

IanB
Posts: 164
Joined: Sun Sep 04, 2011 7:28 pm

Re: Disc Error 20/21/23 and SATA->IDE support

Postby IanB » Sun Dec 17, 2017 10:21 pm

sirbod wrote:SATA->IDE is a different issue.
...
This can only be resolved with a hardware solution, one option is to use an adapter that does control -IOCS16. I've looked at dozens on eBay today and even though they say they support PIO, none of them visually appear to control -IOCS16, the pin appears to have no connection.
...
A more drastic option is to modify the RiscPC motherboard, by removing the pull up resistor on -IOCS16 and grounding it instead to force 16 bit transfers. Alternatively, modify an IDE cable to do the pull down.
...
This is all just a theory mind you, something that would need testing by someone more electronically minded than myself.


I investigated this a few years ago and found the above fix which was to strap -IOCS16 to an adjacent pin on the adapter which was at 0v (i.e. pin 32 to pin 30).
SATAtoIDE.jpg


The other thing to be aware of with CF cards is that they can stop the NIC from working and I posted details of the fix for that here:
viewtopic.php?f=16&t=10545&p=131375#p131375

"The problem is caused by the "Ready" signal on Pin 27 of the IDE interface which is shared with the network card. It's probably meant to be pulled high weakly and driven low by open drain outputs on the network and IDE interface, however it looks like the adapters and some CF card are driving it high which causes any network card that makes use of that signal to fail.
However, the fix is fairly straightforward and that is to put a diode in the Ready line between the CF cards and the IDE socket on the RISC PC with the cathode of the diode (banded end) towards the CF card.
I used a schottky diode as that had a lower voltage drop but any small signal diode like a 1N4148 should work. I found it easier to cut wire 27 of the IDE cable to fit the diode rather than modify the PCB."

Since making that post last year I found a simple way to mod one of the readily available CF to IDE converters with a track cut on one side and the diode on the other:

CFmodSide1.jpg

CFmodSide2.jpg


Return to “hardware”

Who is online

Users browsing this forum: No registered users and 3 guests