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
- Git client updated to 0.07 (News:1)
- Archive Edition 27:1 reviewed (News:)
- Rougol April 2024 meeting on monday is Anniversary time (News:1)
- WROCC April 2024 meeting o...changes to our phone lines (News:1)
- April developer 'fireside' chat is on saturday night (News:)
- March 2024 News Summary (News:4)
- WROCC Newsletter Volume 41:11 reviewed (News:)
- WROCC March 2024 meeting o... Hughes and Peter Richmond (News:1)
- Rougol March 2024 meeting on monday with Bernard Boase (News:)
- Drag'n'Drop 13i2 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
The Icon Bar: Programming: Using *FX from within C
 
  Using *FX from within C
  Cauchy (17:30 5/4/2013)
  Raeddie (05:42 6/4/2013)
    Cauchy (13:42 6/4/2013)
  msww (08:58 6/4/2013)
 
John O'Meara Message #122279, posted by Cauchy at 17:30, 5/4/2013
Member
Posts: 43
Hi,
I can call *Cat and *Time from within C by using the system() function,like; system("Time");, and it does the job, but system("FX\x00"); fails to display the OS and version and its date as *FX 0 does.
Then I wrote the following code piece:
void OSByte0(void)
{
_kernel_swi_regs regs;
regs.r[0] = 0;
regd.r[1] = 0;
_kernel_swi(OS_Byte, &regs, &regs);
}
Which I think is the same as *FX0, and ran that, and the same result as with system("FX\x00"); nothing. Anyone any ideas on what I am doing wrong in both cases? Thanks in advance.
  ^[ Log in to reply ]
 
Holger Palmroth Message #122283, posted by Raeddie at 05:42, 6/4/2013, in reply to message #122279
Member
Posts: 58
"FX\x00" is "FX" followed by a zero byte. You want "FX0", all in plain ASCII, no fancy escape sequences involved. wink
  ^[ Log in to reply ]
 
Matthew Wightman Message #122284, posted by msww at 08:58, 6/4/2013, in reply to message #122279
Member
Posts: 4
Then I wrote the following code piece:
void OSByte0(void)
{
_kernel_swi_regs regs;
regs.r[0] = 0;
regd.r[1] = 0;
_kernel_swi(OS_Byte, &regs, &regs);
}
Which I think is the same as *FX0
According to the documentation for OS_Byte 0 , it works by returning that information as an error. Thus the return value from _kernel_swi will be a pointer to a _kernel_error containing the message you are after.
  ^[ Log in to reply ]
 
John O'Meara Message #122285, posted by Cauchy at 13:42, 6/4/2013, in reply to message #122283
Member
Posts: 43
Thanks for the reply.
calling like this: system("FX0"); to get the effect of *FX 0. Still the same problem; no display is outputed. Edit. Actually it seems as if it works with g++ but not with Castle's C compiler. Also I got OSByte0() working thanks for that too.

[Edited by Cauchy at 17:27, 6/4/2013]
  ^[ Log in to reply ]
 

The Icon Bar: Programming: Using *FX from within C