Important software compatibility notice
Steve Pampling (1551) 8170 posts |
The expectation of a user, knowing that the zeropain mechanism was present and therefore magically fixes such errors, would be that any errors that do come up must be the OS. With a user configurable panel you don’t even have a definitive “this app is covered” state. Then we get the “application xyz isn’t covered by the zeropain system, could you just alter it to cover xyz, oh and also…” situation. 1 Believe me I’ve had many lost hours, days, weeks… |
Rick Murray (539) 13840 posts |
….is that enhances in the operating system don’t mysteriously cause software to stop working. I still don’t see why there should be a big support burden for a module that fixes up page zero accesses in the stable release. Softwarethat is broken should continue as it does now. Well, we’ll see how this plays out. It is something that needs to be done, but it needs to be done with care to minimise the impact…
Is the current ZeroPain app-aware? Common locations in page zero should be trapped and correct results returned (MetroGnome, for example), and probably otherwise trap the first kilobyte (the address range of an offset LDR) and return zero so a read from an uninitialised pointer fails. An exception can be thrown for writing as that is the current situation. Does it even need to be app aware? |
Chris Evans (457) 1614 posts |
I think I must be misunderstanding something. I thought: So to the user their system remains at least as stable as it was. Have I missed something? |
Martin Avison (27) 1494 posts |
Yes, fraid so. The plan outlined in the first post in this thread included…
Note also that currently ZeroPain does not emulate unaligned loads. This has the effect that [Edited to clarify Basic reads] |
Adrian Lees (1349) 122 posts |
Something that I haven’t seen mentioned, but which is definitely worth noting, is that code that reads and uses the data in ‘ZeroPage’ (/processor vectors) could well behave differently even with the ZeroPain module loaded, because almost all those locations now return 0-valued data. So, erroneous code could actually become either more or less stable than previously; without knowing the details of the broken code, the address(es) accessed, and their previous usage (changing/constant..) it’s hard to say, but it should either (i) ‘work’ (stumble on?) predictably, or (ii) fail predictably |
Jon Abbott (1421) 2651 posts |
Does any software past RO3.11 read the hardware vectors directly? I thought that was an early RO issue as RO3.5+ has a legal means to read them and the address of the values has IIRC changed between successive RO versions, so I find it hard to believe there would be any modern software that reads them directly. Any pre RO3.5 software that reads the vectors directly would fail anyhow, as the vectors changed from B addr to LDR PC, [PC, #offset] Should there be any poorly written RO3.5+ software that reads the vectors directly, a 0-minus value shouldn’t affect it as it would need to be using an LDR / LDM or MOV PC to forward the vector on. Pre RO3.5 that uses an encoded B to forward would obviously fail and would have broken with the introduction of RO3.5 anyhow. This issue is the reason most games broke when RO3.5 was introduced. ADFFS gets around it by intercepting the read and returning a corrected B to an intermediary LDR PC within the first 32mb, any writes are blocked and legalised. I’d say that going this far is way beyond the scope of ZeroPain though. |
Martin Avison (27) 1494 posts |
If anyone is testing the development ROMS which include ZeroPain, and also has the latest Organizer v2.23, please can you contact me at the support address in the Help file? |
Chris Evans (457) 1614 posts |
Sorry I thought it was implied I was presuming zeropain would be emulating reads. So I still can’t see where the extra support arises either this year or next. |
Martin Avison (27) 1494 posts |
And applications that have not been fixed which try to access zero page (which is protected by the ROM), I think will also fail. But that aim may have to be modified when the overall results of testing with ZeroPain are available. That is my interpretation of the announcement, anyway! The extra support is required for any code that appears to have ZeroPage problems, either proving the problem lies elsewhere, or fixing it! |
Steve Fryatt (216) 2105 posts |
If there’s anyone using CashBook and a test ROM, the current test build of CashBook no longer reads from Zero Page when trying to close a file (and it doesn’t try to dereference a bunch of stale pointers into its data heap, either). |
Matthew Phillips (473) 721 posts |
We have just uploaded new versions of RiscOSM and House of Cards to our web site which should avoid reading from Zero Page in various circumstances. Please let us know of any further problems with any of our software. |
Jeffrey Lee (213) 6048 posts |
Frederick: The latest ROM for the BB -xM seems to have broken alt-click on filer icon text. The writable text box opens & immediately closes. A new ZeroPain generated immediately after shows; Are you still seeing this problem? I’ve tried on a couple of different machines and haven’t been able to reproduce it. The log suggests it might be NetSurf related, but I’ve tried with it loaded and haven’t seen any problems. Do you have anything else loaded which might be causing trouble? |
Frederick Bambrough (1372) 837 posts |
No, the problem disappeared with the 18th July ROM. Shouldn’t rely on memory. |
Peter Dalziel (1563) 21 posts |
What I would like to see is a list somewhere of which software has been reported to the developer which will avoid repetition. Any developer who has a large user base is going to be inundated with messages. Perhaps at a later date, the list can be adjusted as developers/users have fixed the problem and a new/updated program/module etc. is available. |
Matthew Phillips (473) 721 posts |
I shouldn’t worry about that: RiscOSM has a pretty large user base now, and we received only two reports. Remember that most people do not upgrade to the latest development OS straight away. If a developer gets too many messages he/she can always put up information about current status on their own web site. |
Peter Dalziel (1563) 21 posts |
As I have been testing various ‘problem’ apps, there is one thing that, when eliminated, allows most of (my) the apps to run quite happily. The offending part is the VProtect module. When this is eliminated out of the !Boot structure (ie not loaded) most of the apps don’t add to the log file and run without error when the ZeroPain module is killed. |
Martin Avison (27) 1494 posts |
I thought VProtect was removed from RO5 downloads some time ago as being old, unsupported, and probably no use whatsoever? |
Jeffrey Lee (213) 6048 posts |
And buggy! https://www.riscosopen.org/forum/forums/5/topics/1135#posts-13263 |
Rick Murray (539) 13840 posts |
Unless the source to VProtect is available, having it around is worse than useless. It will protect against a variety of viruses written in the ‘90s which probably wouldn’t run on modern hardware anyway; and without the sources it couldn’t be updated to handle new issues, should anybody bother to create such a thing… |
Chris Evans (457) 1614 posts |
I suspect many were very simple and would work:-( Maybe the sources could be made available? (Not publicly of course!) |
Rick Murray (539) 13840 posts |
I have an archive of viri, unless it is “lost on some SCSI tape”. I used to ask for people to netmail me them if they came across any, and somebody sent me an archive.
Old machine – wasn’t written in BASIC. If it is the one I remember, it hid was a module that could take a variety of different names; it would initialise itself as a hidden task and wait for something to infect. Every so often (running a program, I think) it would claim 1K of RMA. After a while, you’d run out of memory as it would all be tied up the RMA. Given that it happens upon running a program, there is usually no way to walk the heap block and release this memory as the slowness of its behaviour meant that other legitimate claims would be interspersed and… yeah… The one that impressed me was the Link virus. Didn’t do much, but hid well, spread like bacteria, and even temporarily modified one of the anti-virus tools (not VProtect) so it could do its stuff undetected. Clever code. Shame the programmer couldn’t use that cleverness to do something useful… |
Peter Dalziel (1563) 21 posts |
I have now removed VProtect out of my !Boot sequence, so no worries. I obviously didn’t see the discussion about VProtect. |
Andrew Rawnsley (492) 1445 posts |
As an offshoot of the ARMX6 project, the source to Vprotect, and also ABC compiler etc has been recovered from Alan Glover quite recently. I believe the plan is to update them and release into the ROOL tree. Work has already begun on ABC (required for commercial work), and it is now “modern machine safe” although apparently there are still some ZPP issues to resolve. I’d imagine there will be an updated ROOL Dev Tools CD release at some point. |
David Feugey (2125) 2709 posts |
ABC: I say YEEEEEESSSSS. Yep, I only care of Basic :) I think that with a modern version available, a package with ABC, tools and documentation could be sold alone, and will please many people. We could now also hope to for some new things, for example something closer to BBC Basic, or direct VFP support (would be a fantastic add-on). |
Jon Abbott (1421) 2651 posts |
Whilst adding 26bit Module support to ADFFS recently, I spotted a big issue with the way VProtect checks Modules. Instead of scanning them via the appropriate service call, it aliases rmload and rmrun. The majority of game Modules aren’t scanned as a consequence, as any Module inserted/loaded via SWI aren’t scanned. If the source is available, I wouldn’t mind taking a look as I’m very dependent on it for my project. |