SCSI fix 20/08
Frederick Bambrough (1372) 837 posts |
Gwych! No longer need to keep a copy of 5.24 to use SystemDisc with today’s ROM update. |
Martin Avison (27) 1494 posts |
I think CloneDisc was also similarly affected . |
Andrew Rawnsley (492) 1445 posts |
That is good news indeed :) However, slightly concerned that it reads like these programs were making use of undefined/out-of-spec registers. |
Rick Murray (539) 13840 posts |
My interpretation was that as R2 was not previously defined, one could not make any assumptions about it’s state on entry to the SWI. Making that matter…broke stuff.
This appears to be an API change that didn’t have any “safety features”, meaning stuff stodd to go wrong. There’s a reason the API is littered with stuff like setting a register to “TASK” or “TRUE” or “WIDE” (etc). It is to knowingly introduce different behaviour. Without that safe word, the existing API is provided (sometimes to ludicrous levels – look at Wimp_Initialise without the “TASK” word!). |
Steve Fryatt (216) 2105 posts |
Where do you read that? It reads to me that the API changed to use R2 as a parameter when previously it hadn’t been one, which isn’t the programs’ fault. RISC OS has always taken the line that if a register isn’t listed as being treated as a parameter or changed on return, it’s fair game for the caller to use as they see fit. |
Andrew Rawnsley (492) 1445 posts |
OK, this was me misreading the docs – sorry. I read it purely as a SWI return issue, rather than an input one. Makes sense that if programs are zeroing r2 when it is unused, then making it a parameter needs a lot of sanity checks! |
jan de boer (472) 78 posts |
Thank you so much for fixing this. SystemDisc and Fat32format are useable again! |