Rick's b.log - 2015/11/05 |
|
It is the 21st of November 2024 You are 18.218.108.24, pleased to meet you! |
|
mailto:
blog -at- heyrick -dot- eu
That's quite true. Up until now the free word processor has been Fireworkz. It is a reasonable word processor, a bit like all the bits of Word that you might have wanted, without the loads and loads of additional rubbish. Its integration with spreadsheets and charts perhaps making it closer to Works than Word?
Ovation is a complete desktop publishing package that gave early incarnations of Impression a run for its money, helped up the game on RISC OS, and demonstrated to many lesser platforms how DTP should have worked. I was using Ovation while others were stuck with WordPerfect 5.1. Hell, I was using Ovation before Windows! (it was 3.1 that was the popular birth of Windows, and Ovation was around before that).
But, hey, it is time. Now you can use it too. The links are just down there a ways...
Okay, down to business.
The first - I messed up the !OArtWorks !Run file, missing a variable, so Ovation will have started, but not after complaining about ".IfExists" not being found.
The second was quite a bit more interesting. Essentially Ovation was crashing on the Beagle (and possibly other ARMv7 or OMAP hardware?). Anton Reiser did a great job of tracking down where the problem lay and suggesting a fix. I didn't use his fix as I wanted to see why the code wasn't working. The code in question looks to see if the scale factor is 400, and if it is, it calls a special fast division routine, otherwise it does a
The routine in question? Just a bunch of MOVs and such. I was expecting a null pointer or something, but no such luck. I read the function twice from top to bottom and couldn't work out why the hell it would throw a Type 5 (memory access fault). That's when I noticed.
In the old 26 bit world, the
That said, I couldn't get any joy out of the most recent beta build of RISC OS for the Beagle, so I reverted to an earlier one. I'm still having practically zero joy in getting reliable video out of the Beagle. In the end I gave up wasting time and just hooked up the s-video cable. Here's me, testing Ovation:
And here's my lovely high resolution screen. These are the actual picture dimensions, it is not scaled down:
The text pretty much says all that needs to be said. ☺
Some day I might find, in a vide grenier or somesuch, a monitor or TV with DVI input so I can try hooking up the Beagle directly...
I then tested Ovation performing a simple print job. It worked on my build of RISC OS. On the ZeroPain build, simply loading !Printers spat out ~250K of Pain. Ouch. I continued and tried a print. There was one fault from Ovation, but it was in the module PDumperPS. Given the pile of messages caused by starting the printer driver, I'm just going to assume that Ovation copes, the Printer code, less so.
Here is the PDF file (4KiB), generated on RISC OS from the document of the above screenshot. Printed using Steve Fryatt's PrintPDF.
As the changes are minor, I have updated the original archives. Here are the links again:
Here's what has changed since yesterday:
Oh, and don't think I'm being ungrateful about the bug reports. If you want a bug nailed to the wall with extreme prejudice, you'll need to tell me where to find it!
Ovation - the fixed one!
Steve Pampling, on the ROOL forums, pointed out something that I hadn't actually thought of:
However, a word processor is not a document processor. WP is not DTP. There are similarities, until you realise that DTP is aimed at providing a proper publishing solution.
Barely a day passed before the bug reports rolled in. Okay, I lie. There were two issues that people picked up.
this/that
style divide.
MOVS PC, R14
MOVS
instruction was a useful way to restore both the PC and the flags (both being held in R14) in one go.
The later ARMs do the same thing - the value of R14 is placed into PC, and CPSR is updated from SPSR. This, obviously, is an "unpredictable" instruction in User mode (which has no SPSR). The actual result of calling MOVS PC,R14
in User mode on a 32 bit processor is therefore likely to be "implementation defined"; and as such, the Pi coped with it while the OMAP didn't.
Different core + different manufacturer + illegal instruction = Oops.
I didn't try any of the fancy print options as, honestly, I didn't remember how they worked...
(this should be a complete, self contained, version of Ovation; tested on my Pi...)
(note that this version of the source builds as a DDE application from a MakeFile; it is a bit different to David's original code)2015/11/05 v1.50 *released*
* Version number not bumped as only two minor fixes.
* Would crash with a Type5 on ARMv7. Anton Reiser did the hard work of
tracking down the source of the problem and suggesting a potential fix.
I didn't use his fix as it turned out that the xfastdiv400 code within
s.osasm was returning using MOVS PC, R14. One that didn't get caught in
the 32 bit conversion and had no particularly unpleasant effects until
ARMv7.
* Corrected idiotic facepalm fail in tweaking !OArtWorks. I set the app's
variable to be OArtWorks$Dir to match the app name, but forgot to change
the one where the variable was actually used. This is why Ovation may
have started complaining about ".IfExists" not being found. Thank you to
Matthew Harris for pointing this out.
David Pilling, 6th November 2015, 18:51 Was it sunny on the 29th July 1990 - last time I edited osasm - seemingly we knew about the benefits of dividing by 400 back then. MOVS should have gone when it did in dcasm - 2002 Iyonix changes. The rules for 32 bit conversion said get rid of them, but any that were missed had no effect until later ARMs came out. There were another couple of these which came to light a few years back.
© 2015 Rick Murray |
This web page is licenced for your personal, private, non-commercial use only. No automated processing by advertising systems is permitted. RIPA notice: No consent is given for interception of page transmission. |