ChangeFSI broken
Steve Pampling (1551) 8172 posts |
I was contemplating doing what the licence describes and ripping out some of the code to use in my own. The front end is a different item and if you spend any time longer than 30 seconds reading the function names and comments you do wonder what substances were being abused. Anyway a simple front end to set particular options would do. However that still doesn’t deal with the structure elements and duplicate names like Transient. |
Fred Graute (114) 645 posts |
After fixing a minor problem – scanning for ADFS drives – BlackHole 4.18 seems to be OK on the RPi, even in ARMv7 strict mode. Mind you, this wasn’t an exhaustive test but dragging objects to it did move them to its bin. Trapping Filer deletes didn’t throw a wobbly either. |
Mike Morris (1852) 89 posts |
No, I don‘t for one minute think that taking liberties is all right. Yes, I fully admit that I phrased what I said badly (and in future I‘ll certainly avoid making comment late at night when I‘m too tired to think things through as clearly as I should). However, the irony of all this is that I‘m very much against piracy and rip-offs of any kind; in years gone by when my children were young I‘ve counselled them against accepting offers of pirate videos/software/whatever, for both practical and, even more importantly, moral reasons. You’ll note that I suggested immediately below my ‘spirit’ comment that we contact the original author about it. Although perhaps clumsily put, at the back of my mind my ‘spirit of the thing‘ comment was based on the copyright giving permission for people to use bits of the coding for their own, non-profit use, and giving an outline of the background to this. Although the initial part was quite contradictory to this I took from the overall ’feel’ of the thing that the intention, the spirit of it, was very generous and in the absence and very probable untracability of the author this was something that could possibly be explored, rather than let such a useful app wither on the vine. I may have got that entirely wrong but it was this I was thinking of and no more. I must admit though that that I find it reassuring to see it subsequently turned out I was not alone in my interpretation, that permission is given to use parts of the coding.
My wording wasn’t exactly great and I understand why you might have felt how you did but I in turn felt I had to put the record straight. Your apology is unreservedly accepted, as I hope you accept mine upthread. To turn back to the matter in hand:
This looks encouraging – I look forward to further developments! BTW, my copy of BH seems to be 4.00 as far as I can tell – where did you get 4.18 from? |
Steve Pampling (1551) 8172 posts |
With the simple hack of commenting out the unwanted scan of ADFS drives that don’t exist my hacked copy has worked just fine on a beagle since October. We could take that as a decent test period… |
Steve Pampling (1551) 8172 posts |
Well in Freds case he already stated it came of a Foundation Risc User CD, which I suppose with the patience to download the ISO of the DVD of volumes 1-16 you could do yourself – that version seems to include a Hole500 which is 32 bit. The alternate is to go here and download the latest version on the web. Given the views on the license conditions and the likelihood the FRU version may have slightly breached those conditions by having the module altered I suppose you could say that the Bent Bracke web site version altered by the end user is technically OK while the FRU is not. Of course we could stop fussing about that detail and let Fred alter Transient… |
Mike Morris (1852) 89 posts |
Yeah, maybe that’s the way to go… |
Fred Graute (114) 645 posts |
I do indeed. BTW, any luck contacting the author?
It’s on FRU CD 16 (and above). Some digging round revealed that the conversion to 32-bit was done by Christian Ludlam but his site is gone and the WayBack machine doesn’t seem to have a copy of blackhole.zip.
Here’s how I fixed it, it has the advantage that BlackHole will still run on other platforms. Load the !RunImage into a text editor, then go to line 893 (F5 in StrongED). The code should read:
Change it to:
Save the altered file. It should now run on RPi.
Don’t think I’ll changing Transient initially but I do plan to have a play with the ideas mentioned in this thread. |
Steve Pampling (1551) 8172 posts |
On examination the Hole500 module is all but identical to the Hole350 module. The differences appear to be the addition of the additional elements of a 32 bit header and the change of the instruction at 768 This pair: Becomes Interesting change. |
Rick Murray (539) 13850 posts |
Mmm.
I wonder why the original wasn’t just |
Steve Pampling (1551) 8172 posts |
Have a shufty at the rest of the Hole350 module – it uses the non-flags restore version. That’s the only flags restore. That’s a module written for RO 3.50 that only uses a PSR manipulation once |
Rick Murray (539) 13850 posts |
Still strange to load R14 and then MOVS it when the ^ would do the same thing in an instruction less. ;-) |
Mike Morris (1852) 89 posts |
Nothing back via email as yet. I’ll give it a few more days then if still no reply I’ll write via surface post. As such a long time has elapsed since BH2 was released, to be honest I’m writing more in hope than expectation but as they say, nothing ventured… Thanks BTW for looking into the whereabouts of v4.18. |
Steve Pampling (1551) 8172 posts |
To me it has all the hallmarks of code done with a set of macros (push registers to stack and pull back at end) and a hand twiddle for the exit (MOVS) Back in the 26 —> 32 discussions mentality, people need pointing at 26 bit dependencies and the replacement macro. That way, should anything new come up the macro is changed and people just recompile. |
Rick Murray (539) 13850 posts |
The only macros I use are EQUD / EQUS (and EQUSZA for null terminated, aligned) as I prefer that to DCD / DCS. That said, a properly implemented macro would either define it dynamically depending upon the attributes of the compilation (26 bit vs 32 bit) as RISC OS does. Alternatively, change the macro… |
Steve Pampling (1551) 8172 posts |
BASIC with extensions that have problems in 32 bit
Bad habits die hard then? :)
Precisely. |
WPB (1391) 352 posts |
If you don’t get any luck contacting Mark Greenwood, you could try getting in touch with Bent Bracke (RISC OS software here: http://bracke.dk/apps.html), who seems to have inherited much of Mark’s work. Bent’s email address is given in, eg, this file: https://github.com/bracke/TBKeyList/blob/master/Resources/UK/TextManual. |
Rick Murray (539) 13850 posts |
Huh?
Bad habits? Macros are optional, you know. Sometimes they are useful… |
Steve Pampling (1551) 8172 posts |
Oh, well, if you’re going to spell STRING $var wrong how is anyone supposed to know? Edit. Oh, :) |
Fred Graute (114) 645 posts |
Well if it hasn’t bounced then at least the domain is still there so not all is lost. You could try social media, that’s how I found Transient’s original author.
No problem. It’s just a shame that I wasn’t able to find anything helpful regarding Hole500.
Right, I’ve done some initial explorations and come up with a way to trap Filer deletes that doesn’t lose the structure of deleted apps/dirs. A proof of concept can be found here It will move deleted objects to Transient’s today directory (the directory can be changed by modifying the source). To delete something out right hold down Shift. It’s still early days but this looks promising. Any comments? |
Steve Pampling (1551) 8172 posts |
Rather quick. I’ll see if it breaks anything… |
Steve Pampling (1551) 8172 posts |
Well, apart from the ability to empty the Transient directory. A second (identical delete Loaded while Blackhole is running it intercepts before Hole as expected, when the module is killed deletes occur and Hole does not intercept until re-initialised. |
Chris Johnson (125) 825 posts |
I loaded TrapDelete late last night on my Iyo. Machine is on 24/7 and runs some SyncDisc jobs overnight. Just compared the SyncDisc logfile with what is in the <Transient$Today> directory and everything that SD ‘removed’ from the backup appears to be in Transient, including the original directory structure. So it looks like it is a very good start. I will put it on the BB and PB today and report back later (good or bad 8)). |
Fred Graute (114) 645 posts |
At the moment it simply traps every delete through Filer_Action. For a release version there’d have to be a way to set up an exclusion list for things not to trap (Transient, Scrap, etc).
That’s because Transient doesn’t know about the objects being moved to its Today dir as it’s been done behind its back – in this case the Today dir is just another directory.
That’s not what I’m seeing here. With both BlackHole and TrapDelete, deleted objects appear in BlackHole’s bin and in Transient’s Today dir. Which is what I would expect given how they work. After killing TrapDelete, deleted objects appear in BlackHole’s bin only. I cannot see how TrapDelete could stop Singularity from working so could you please try again to confirm this.
Thanks Chris. That’s a bit more rigorous testing than I had in mind but it’s good to know that TrapDelete is coping well. BTW was the work you did on GIGO a one-off or are you planning/willing to do more work on it? GIGO is one of the options I’m considering (commute FilerAction deletes to DataLoad messages), I also found a bug in GIGO. |
Chris Johnson (125) 825 posts |
Well, at the time I assumed it was essentially a one off, in that it was primarily a recompile for ARMv7. I haven’t received any bug reports from other users. I would certainly be willing to try to fix bugs. I do not use GIGO in anger here, so would be unlikely to identify bugs myself, without some prompting. |
Fred Graute (114) 645 posts |
Neither do I but I’ve been exploring the various trashcans recently and found an issue with GIGO. Putting back a directory with subdirs doesn’t work correctly when it’s on another FS from GIGO itself, it only does the top level objects. Probably caused by not specifying the recurse flag when calling xosfscontrol_copy in Unbin(), so this could be an easy fix. |