log in | register | forums
Show:
Go:
Forums
Username:

Password:

User accounts
Register new account
Forgot password
Forum stats
List of members
Search the forums

Advanced search
Recent discussions
- Elsear brings super-fast Networking to Risc PC/A7000/A7000+ (News:)
- Latest hardware upgrade from RISCOSbits (News:)
- Accessing old floppy disks (Gen:3)
- November developer 'fireside' chat on saturday night (News:)
- RISCOSbits releases a new laptop solution (News:4)
- Announcing the TIB 2024 Advent Calendar (News:2)
- RISC OS London Show Report 2024 (News:1)
- Code GCC produces that makes you cry #12684 (Prog:39)
- Rougol November 2024 meeting on monday (News:)
- Drag'n'Drop 14i1 edition reviewed (News:)
Latest postings RSS Feeds
RSS 2.0 | 1.0 | 0.9
Atom 0.3
Misc RDF | CDF
 
View on Mastodon
@www.iconbar.com@rss-parrot.net
Site Search
 
Article archives
Acorn Arcade forums: Programming: Thanks, DDEUtils.
 
  Thanks, DDEUtils.
  monkeyson2 (05:55 6/3/2005)
  monkeyson2 (06:12 6/3/2005)
    Phlamethrower (06:47 6/3/2005)
      Phlamethrower (06:51 6/3/2005)
    jmb (13:23 6/3/2005)
      monkeyson2 (13:39 6/3/2005)
 
Phil Mellor Message #62939, posted by monkeyson2 at 05:55, 6/3/2005
monkeyson2Please don't let them make me be a monkey butler

Posts: 12380
Thutils.

I've been scuppered by a rather annoying bug. The culprits are a combination of:

DDEUtils 1.63 (4 Feb 2000), 1.64 (5 Nov 2002)
GCC 3.4.1 (yes, I know there's 3.4.4 available now, I'm currently downloading it at 3K/sec...)
SharedUnixLib 1.02
My random code.


My random code is:
int new_size = 14;
char* new_font = "\\FTrinity.Medium.Italic";
rin.r[1] = new_font;
rin.r[2] = new_size * 16;
rin.r[3] = new_size * 16;
rin.r[4] = 0;
rin.r[5] = 0;
kerr = _kernel_swi(0x40081, &rin, &rout); // Font_FindFont
if (kerr != NULL)
{
fprintf(stderr, "%s\n", kerr->errmess);
}

And the error reported is:

'ADFS::HardDisc4.$.Games.Magnetic.src.RISCOS' is a directory.

(This CSD and <Obey$Dir>)

It works fine with a font that has already been claimed somewhere, eg. the desktop font, or start draw, pick a font, type some text.

After various shift-booting and reloads, I've tracked it down to the DDEUtils module. The error always occurs with DDEUtils loaded, and never without it.

I think it must be because Font$Path contains the word "Prefix", and DDEUtils provides the command "Prefix":

Font$Path(Macro) : ADFS::HardDisc4.$.!BOOT.Resources.!Fonts.,<Font$Prefix>.,Resources:$.Fonts.

==> Help on keyword Prefix
*Prefix selects a directory as the current directory unique to the currently executing task. *Prefix with no arguments sets the current directory back to the
systemwide default (as set with *Dir).
Syntax: *Prefix [<directory>]


Isn't that fun?
  ^[ Log in to reply ]
 
Phil Mellor Message #62940, posted by monkeyson2 at 06:12, 6/3/2005, in reply to message #62939
monkeyson2Please don't let them make me be a monkey butler

Posts: 12380
Hmm. Works OK using the Shared C Library instead of UnixLib. Maybe it's the filename translation...
  ^[ Log in to reply ]
 
Jeffrey Lee Message #62941, posted by Phlamethrower at 06:47, 6/3/2005, in reply to message #62940
PhlamethrowerHot Hot Hot Hot Hot Hot Hot Hot Hot Hot Hot Hot Hot stuff

Posts: 15100
Yes - I remember reading about that bug on the GCC mailing list. However the list archives for pre-2005 have vanished, and I no longer have a copy of the mails myself :|

As a very rough guess, I think it was to do with a symbol such as @ causing problems with the filename translation. I can't see any obvious sign of the bug on the bug tracker, but I think it got fixed for 3.4.4. There are several mentions of improvements to the filename translation in the changelog, to support this view.
  ^[ Log in to reply ]
 
Jeffrey Lee Message #62942, posted by Phlamethrower at 06:51, 6/3/2005, in reply to message #62941
PhlamethrowerHot Hot Hot Hot Hot Hot Hot Hot Hot Hot Hot Hot Hot stuff

Posts: 15100
==> Help on keyword Prefix
*Prefix selects a directory as the current directory unique to the currently executing task. *Prefix with no arguments sets the current directory back to the
systemwide default (as set with *Dir).
Syntax: *Prefix [<directory>]
Hmm, actually that might be related to a problem I was having with the Dark Matter source tree on GCC 3.4.1 release 1. It was using *Dir to change directories, but not having any effect on the compiler. The source works with 3.4.4, so I think that the bug has been fixed.
  ^[ Log in to reply ]
 
JMB Message #62945, posted by jmb at 13:23, 6/3/2005, in reply to message #62940
Member
Posts: 467
Hmm. Works OK using the Shared C Library instead of UnixLib. Maybe it's the filename translation...


UnixLib was patched to work around the issue. ROL's DDEUtils has had this issue fixed, anyway. Castle's hasn't. The issue is that DDEUtils is incorrectly interfering with OS_File,14 etc calls.

So, your options are:

a) Update to a later UnixLib (the one in the GCC 3.4.4 release should do)
b) Get Castle to fix their DDEUtils (given that I reported it in January 2004, you'd have thought they might have got around to fixing it by now...) :frown:
  ^[ Log in to reply ]
 
Phil Mellor Message #62946, posted by monkeyson2 at 13:39, 6/3/2005, in reply to message #62945
monkeyson2Please don't let them make me be a monkey butler

Posts: 12380
UnixLib was patched to work around the issue.
So, the time I've saved since December not downloading 3.4.4 has been overshadowed by the time taken for me to discover that I should have done! ;)

ROL's DDEUtils has had this issue fixed, anyway. Castle's hasn't.
Hurrah for split-reponsibility over OS development. :frown:

So, your options are:

a) Update to a later UnixLib (the one in the GCC 3.4.4 release should do)
b) Get Castle to fix their DDEUtils (given that I reported it in January 2004, you'd have thought they might have got around to fixing it by now...) :frown:
or

c) use libscl.

Currently on option 3 because it's working OK, but will probably switch back to UnixLib. :)
  ^[ Log in to reply ]
 

Acorn Arcade forums: Programming: Thanks, DDEUtils.