home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Amiga Format CD 28
/
amigaformatcd28.iso
/
-seriously_amiga-
/
programming
/
e
/
e-list9803
/
e_list0398
next >
Wrap
Text File
|
1998-04-23
|
194KB
|
5,299 lines
This digest for list amigae-list has been created on Sun Mar 1 14:03:06 1998
------- THIS IS A RFC934 COMPLIANT DIGEST, YOU CAN BURST IT -------
Date: Sun, 01 Mar 1998 14:01:22 +0100
From: gamboni@fastnet.ch (Jacques Gamboni)
Subject: Attribute refreshing with MUI
I have trouble to refresh some objects in MUI:
In most cases, a simple Mui_Redraw() is sufficient, but not always.
Examples:
* I have a group with custom layout, that can get new objects with drag
'n' drop: I have
a library of available objects, the user drops one at the place he
wants. Because a group mustn't
be empty, when no objects are in the group I put an invisible
RectangleObject, that I remove
as soon as a new object is created. In this case, the number of objects
(1) doesn't change, so maybe
it is the reason why MUI doesn't call my custom layout hook (the first
object drop in the window
is always at the same place, the place where I put the rectangle at
creation time). When the window is resized,
the layout hook is called and the new object appears at correct place.
* The objects should be moved with Drag'n'Drop: When my Group recieves a
drop message, it
moves the coordinates (global variables, read by my custom layout hook).
The problem is that my custom layout hook is not called, even when
Mui_Redraw is called: The user
must resize the window so that the custom layout hook is called and now
the objects appears at the
correct place. How can I call my hook from the program? Using
MUIM_CallHook is probably
not sufficient, because the resulting values aren't read by Mui..
* I need in some cases to change the MUIA_Image_Spec of an ImageObject,
but Mui doesn't react
when I execute
set(gad,MUIA_Image_Spec,s)..
And I'm sure the command is correct because when I iconify the window
and open it again, Mui reloads
all images of the window, and displays the correct images, but when I
redraw the window (e.g. resize
or MUI_Redraw()), the image doesn't change..
So I would need to ask Mui to reload the image, in this case.
Maxime
------- CUT --- CUT --- CUT --- CUT --- CUT --- CUT --- CUT -------
From: massa@earthling.net ("Matthew K. Massa")
Date: Sun, 01 Mar 1998 09:58:07 -0600
Subject: UNSUBSCRIBE
Hello,
Kind regards
------- CUT --- CUT --- CUT --- CUT --- CUT --- CUT --- CUT -------
From: massa@earthling.net ("Matthew K. Massa")
Date: Sun, 01 Mar 1998 10:05:46 -0600
Subject: UNSUBSCRIBE
Hello,
Kind regards
------- CUT --- CUT --- CUT --- CUT --- CUT --- CUT --- CUT -------
Date: Tue, 3 Mar 1998 13:15:05 +0100 (MET)
From: rade@coli.uni-sb.de (Ralph Debusmann)
Subject: EasyGUI
Hi,
I found some a little annoying limitations when using EasyGUI for my tiny
moduleplayer. The problems I had have to do with the slider-gadget:
1. There is no proc to change the min- and max values of a slider
(workaround: I used Gt_SetGadgetAttrsA, this works flawlessly)
2. The EasyGUI-slider seems to have 'GA_RelVerify' on by default, i.e. my
corresponding procedure is called on every slidermove. I'd like to have
the slider have 'GA_RelVerify' set to 0, since I only want to call my
procedure (set and play a new subsong, e.g. with sidplayer) when the
slider really has moved and the mousebutton is not pressed any more.
Gt_SetGadgetAttrsA isn't able to change 'GA_Relverify', so that I would
have to resort to creating my own slider from gadtools... not nice :(
Are there other workarounds?
Apart from that, EasyGUI is just a nice system, I like it very much and
won't resort to MUI or BGUI, I think.
Ciao, Ralph
- --
Fachschaft CL, Geb. 17.3, Raum 6.03 (Keller), Tel.: 0681-302-4178
HiWi im Projekt LISA, Geb. 17.3, Raum 1.11, Tel.: 0681-302-4496
Homepage, http://www.coli.uni-sb.de/~rade
------- CUT --- CUT --- CUT --- CUT --- CUT --- CUT --- CUT -------
Date: Wed, 4 Mar 1998 10:50:19 GMT
From: jason@fsel.com (Jason Hulance)
Subject: Re: Re[3]: whatis.library
Eric Sauvageau <merlin@thule.no> quoted and wrote:
> > And of course you're taking the date from a similar datestamp on Aminet.
> > That's a good comparison...
>
> No, I'm taking the date from my own knowledge :)
Yes, I thought as much. The first version of NewIcons that I saw on
Aminet was at the end of 1994. That's a good six months *after* the
release of FakeDefIcon...
> The FakeDefIcon on Aminet was labeled v0.1, so I assumed it was the
> first (and last) version you ever released. If you released 0.05
> before that, then my apologies :)
That was the first and only version, as you suggest, but it obviously
took quite a while to develop and write. I was actually hoping someone
would take the idea and develop it further (I supplied everything,
including the source). So, I wasn't upset when DefIcons came out using
the same techniques, just a bit miffed that there wasn't any
attribution. I'm quite happy to assume it was a big coincidence.
Of course, in an ideal world, the Workbench would have hooks in it for
programmers to add their own extensions and we wouldn't need hacks like
these. (Actually, maybe there are such things as patchable, private
entries in workbench.library... Any clues, Eric?)
Cheers!
- --
The conundrum for today is "plstighyr".
Your numbers are 100, 10, 2, 3, 5 and 1. The target value is 834.
======================================================================
Jason R. Hulance Email: jason@fsel.com
Formal Systems (Europe) Ltd Tel: [+44] (0)1865 728460
3 Alfred Street, Oxford OX1 4EH, UK Fax: [+44] (0)1865 201114
------- CUT --- CUT --- CUT --- CUT --- CUT --- CUT --- CUT -------
Date: Wed, 4 Mar 1998 14:19:39 +0000 (GMT)
From: sac@csd.abdn.ac.uk ("Stuart Caie (kyz)")
Subject: Re: Re[3]: whatis.library
On Wed, 4 Mar 1998, Jason Hulance wrote:
=>Of course, in an ideal world, the Workbench would have hooks in it for
=>programmers to add their own extensions and we wouldn't need hacks like
=>these.
Like RiscOS, perhaps?
kyz
Ich werde umgehauen; Doch ich stehe wieder auf; Ihr werdet mich nicht unterkriegen
Er trinkt einen Whisky; Er trinkt einen Wodka; Er trinkt ein Lager; Er trinkt
ein Cider; Er singt die Lieder, die ihn; An die guten Zeiten erinnern; Er singt
die Lieder, die ihn; An die besseren Zeiten erinnern
------- CUT --- CUT --- CUT --- CUT --- CUT --- CUT --- CUT -------
From: merlin@thule.no (Eric Sauvageau)
Date: Wed, 4 Mar 1998 14:07:21 +0500
Subject: Workbench patching
On Wed, 4 Mar 1998, we received a letter from about 'Re: Re[3]: whatis.library':
> Of course, in an ideal world, the Workbench would have hooks in it for
> programmers to add their own extensions and we wouldn't need hacks like
> these. (Actually, maybe there are such things as patchable, private
> entries in workbench.library... Any clues, Eric?)
Sadly, Workbench is very closed. You see, Workbench was originaly written by
a guy whose name I forgot who was more used in working on large systems. Workbench
1.x ended up being quite messy, doing a lot of private layers trick rather than
calling OS functions for it, and so on. When with 2.x CBM decided to almost
rewrite half of the OS, they looked at WB, and faced a rather messy source, so
WB got very few enhancements.
Heck, FULL font sensitivity was only attained with 3.1, when the Execute COmmand
window also got font-sensitive.
Workbench.library has a few vectors, but not much that can be patched. The vectors
I know about (in addition of the well-known App#? ones):
- - WBInfo() (V39) opens the WB icon Information window
- - A routine called by IPrefs to refresh the WB (args determine if it will refresh
icons, fonts, or close the screen and reopen it.)
- - An LVO for launching WB
I think there's another LVO related to the devices shown on the WB screen, called
every 2-3 secs.
But sadly, no real way to wedge in to patch any function beside the icon Information
window. That's why the way to go is with complete WB replacements, such as DOpus
or Scalos (for which I betatest and write ClassAct modules).
And so, patches like NewIcon or #?DefIcon had to rely on higher-level patching.
NewIcon patches icon.library, and does some graphics.library patches to achieve
the no border/font outline/transparent dragging stuff.
Ciao!
... Your PC is always crashing? Try setting BUGS=OFF in your CONFIG.SYS.
- --
===--- - - -
Eric Sauvageau http://www.thule.no/~merlin/ merlin@thule.no
Amiga wizard known as Merlin, casting with E runes, resulting in:
DevsMan - MFormat - NewIcons4 - SysInspector - XPKatana
- - - - ---===
------- CUT --- CUT --- CUT --- CUT --- CUT --- CUT --- CUT -------
Date: Thu, 5 Mar 1998 12:43:39 +0100 (MET)
From: szczepan@cksr.ac.bialystok.pl ("Marcin Juszkiewicz (Szczepan/BlaBla)")
Subject: MultiUser
Hi !
I'm searching for AmigaE modules for multiuser.library. I have
emodules:multiuser.m converted from pragma but I don't know how to convert
libraries/multiuser.(i|h) -> AmigaE module. Please help..
- ------
Marcin Juszkiewicz (Szczepan/BlaBla) *Team Amiga*
szczepan@cksr.ac.bialystok.pl http://cksr.ac.bialystok.pl/szczepan/
A1200 BlizzIv 2+8MB RAM 425MB HDD
Author of MultiView for OS 2.0+ -> Aminet:util/sys/2b_mv_os2_x.lha
------- CUT --- CUT --- CUT --- CUT --- CUT --- CUT --- CUT -------
From: merlin@thule.no (Eric Sauvageau)
Date: Thu, 5 Mar 1998 14:31:56 +0500
Subject: Re: MultiUser
On Thu, 5 Mar 1998, we received a letter from about 'MultiUser':
> Hi !
>
> I'm searching for AmigaE modules for multiuser.library. I have
> emodules:multiuser.m converted from pragma but I don't know how to convert
> libraries/multiuser.(i|h) -> AmigaE module. Please help..
I'll probably have to convert them myself soon for a Scalos module I'm writing.
Send me what's you've got, I'll convert the remaining includes for you.
Ciao!
... "Hyper 5... Embraye!" - Picard, "Star Trek:Generations" v.f.
- --
===--- - - -
Eric Sauvageau http://www.thule.no/~merlin/ merlin@thule.no
Amiga wizard known as Merlin, casting with E runes, resulting in:
DevsMan - MFormat - NewIcons4 - SysInspector - XPKatana
- - - - ---===
------- CUT --- CUT --- CUT --- CUT --- CUT --- CUT --- CUT -------
From: kolo8@ely.pg.gda.pl (Piotr Gapinski)
Date: Fri, 06 Mar 1998 08:56:40 +0100
Subject: easyGUI
Warning: This is a message in MIME format. Your mail reader does not
support MIME. Some parts of this message will be readable as plain text.
To see the rest, you will need to upgrade your mail reader.
This message was composed on an Amiga using the YAM mailer.
YAM is available at http://bitcom.ch/~mbeck/
- --BOUNDARY.7369.2008.5943528.1
Content-Type: text/plain
Two small extensions to the easyGui module.
Now user CAN change window pos or size even when window is closed.
/********** movewin() **********/
EXPORT PROC movewin(gh:PTR TO guihandle,x=-1,y=-1)
DEF w:PTR TO window
IF w:=gh.wnd
MoveWindow(w, IF x=-1 THEN 0 ELSE (x-w.leftedge),
IF y=-1 THEN 0 ELSE (y-w.topedge))
ELSE
gh.x:=x
gh.y:=y
ENDIF
ENDPROC
/********** sizewin() **********/
EXPORT PROC sizewin(gh:PTR TO guihandle,xs=-1,ys=-1)
DEF w:PTR TO window
IF w:=gh.wnd
SizeWindow(w, IF xs=-1 THEN 0 ELSE (xs-w.width),
IF ys=-1 THEN 0 ELSE (ys-w.height))
ELSE
gh.xsize:=xs
gh.ysize:=ys
ENDIF
ENDPROC
PS: new module (easygui.m) included
Pozdrawiam,
- -----///-----------------------
Piotr Gapinski
mailto: kolo8@ely.pg.gda.pl
- --BOUNDARY.7369.2008.5943528.1
Content-Type: application/octet-stream; name="easy.lha"
Content-Transfer-Encoding: base64
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
- --BOUNDARY.7369.2008.5943528.1--
------- CUT --- CUT --- CUT --- CUT --- CUT --- CUT --- CUT -------
From: sanric@ronet.it (Riccardo Santato)
Date: Sat, 07 Mar 1998 17:27:59 +0100
Subject: AFC problems
Hello !
I've been using Super_Picture object from AFC. After having put a backdrop
picture
for my E Project Manager on an Intuition screen, I'm not able to keep it
refreshed,
so when it comes to move an Easygui window, the picture is deleted.
Are there workaround for this or particular screen flags that I can put ?
- --
==============================================
Santato Riccardo
sanric@ronet.it
==============================================
------- CUT --- CUT --- CUT --- CUT --- CUT --- CUT --- CUT -------
Date: Mon, 9 Mar 1998 10:35:39 +0100 (MET)
From: rade@coli.uni-sb.de (Ralph Debusmann)
Subject: Freezing a process/task
Hi #?,
for my 'EasyPlayer' (will develop to a configurable modplayer using
external players like sidplay and mpega...) I'd need to know how to freeze
a process/task like sysmonitors like Xoper or Scout do. I need this to
freeze the external launched programs and pause them - hard method but I
don't see why I shouldn't do it :)
Ciao, Ralph
- --
Fachschaft CL, Geb. 17.3, Raum 6.03 (Keller), Tel.: 0681-302-4178
HiWi im Projekt LISA, Geb. 17.3, Raum 1.11, Tel.: 0681-302-4496
Homepage, http://www.coli.uni-sb.de/~rade
------- CUT --- CUT --- CUT --- CUT --- CUT --- CUT --- CUT -------
From: jj@it.kth.se (Janne Johansson)
Subject: Re: Freezing a process/task
Date: Mon, 09 Mar 1998 11:08:06 +0100
> for my 'EasyPlayer' (will develop to a configurable modplayer using
> external players like sidplay and mpega...) I'd need to know how to freeze
> a process/task like sysmonitors like Xoper or Scout do. I need this to
> freeze the external launched programs and pause them - hard method but I
> don't see why I shouldn't do it :)
One easy way is to change the TaskPri to -128.
Tasks with that prio never get any cpu.
- -------------
"Every girl with sense, loves those dead
presidents..." -Quireboys
Mail: jj<at>it.kth.se
Phone: +46-8-7521444 (work)
Cell: +46-70-740 1440
Http: //www.it.kth.se/~jj
------- CUT --- CUT --- CUT --- CUT --- CUT --- CUT --- CUT -------
Date: Mon, 9 Mar 1998 10:41:38 GMT
From: jason@fsel.com (Jason Hulance)
Subject: Re: Freezing a process/task
Ralph Debusmann <rade@coli.uni-sb.de> wrote:
> for my 'EasyPlayer' (will develop to a configurable modplayer using
> external players like sidplay and mpega...) I'd need to know how to freeze
> a process/task like sysmonitors like Xoper or Scout do. I need this to
> freeze the external launched programs and pause them - hard method but I
> don't see why I shouldn't do it :)
AFAIK, prodding a task externally using such functions is very nasty.
Your task could be in the middle of anything. A much nicer scheme would
use a semaphore to put the task to sleep until it was required again.
Investigate semaphores, they're very easy to use and they let you do
what you want in a *safe* and supported way.
Cheers!
- --
The conundrum for today is "aepmrolnt".
Your numbers are 100, 8, 10, 3, 9 and 5. The target value is 725.
======================================================================
Jason R. Hulance Email: jason@fsel.com
Formal Systems (Europe) Ltd Tel: [+44] (0)1865 728460
3 Alfred Street, Oxford OX1 4EH, UK Fax: [+44] (0)1865 201114
------- CUT --- CUT --- CUT --- CUT --- CUT --- CUT --- CUT -------
From: merlin@thule.no (Eric Sauvageau)
Date: Mon, 9 Mar 1998 14:44:50 +0500
Subject: Re: Freezing a process/task
On Mon, 9 Mar 1998, we received a letter from about 'Freezing a process/task':
> Hi #?,
>
> for my 'EasyPlayer' (will develop to a configurable modplayer using
> external players like sidplay and mpega...) I'd need to know how to freeze
> a process/task like sysmonitors like Xoper or Scout do. I need this to
> freeze the external launched programs and pause them - hard method but I
> don't see why I shouldn't do it :)
It's done in a rather dirty way. I wouldn't recommend it for an application
you use everyday, way too much problems could appear from it.
You'd be better using a signal. Have that application wait for a specific signal
in all its Wait() blocks, or check periodicaly if a given signal was set. If
it's set, immediately Wait() for another signal that would tell it to resume.
100% OS legal, and garanteed to work under future revisions of the OS.
The method we use to freeze a task can cause serious damage when in the middle
of some form of interprocess communication. Let's say Task 'A' sends to 'B',
'B' gets freezed at the same time, and task 'A' still waits for an answer from
'B', but 'B' no longer exists. Result: 'A' locks (imagine if 'A' is Intuition
or input.device...), or even crashes.
Ciao!
... There is no security between the cradle and the grave.
- --
===--- - - -
Eric Sauvageau http://www.thule.no/~merlin/ merlin@thule.no
Amiga wizard known as Merlin, casting with E runes, resulting in:
DevsMan - MFormat - NewIcons4 - SysInspector - XPKatana
- - - - ---===
------- CUT --- CUT --- CUT --- CUT --- CUT --- CUT --- CUT -------
From: merlin@thule.no (Eric Sauvageau)
Date: Mon, 9 Mar 1998 14:50:00 +0500
Subject: Re[2]: Freezing a process/task
On Mon, 9 Mar 1998, we received a letter from about 'Re: Freezing a process/task':
> > for my 'EasyPlayer' (will develop to a configurable modplayer using
> > external players like sidplay and mpega...) I'd need to know how to freeze
> > a process/task like sysmonitors like Xoper or Scout do. I need this to
> > freeze the external launched programs and pause them - hard method but I
> > don't see why I shouldn't do it :)
>
> One easy way is to change the TaskPri to -128.
> Tasks with that prio never get any cpu.
'Never' is such a strong word :) I saw CPU meters who measure how much CPU is
available by using such a low-priority task. If the CPU was always 100% loaded,
then that low pri task would never get called. But since those CPU meter do
show more than 0% available, I'd say tasks with such a low priority DO get the
CPU from time to time.
Would be nice if the Exec scheduler would support a special pri (pri -128 could
be it) at which it would NEVER schedule the task. Could be nicely and cleanly
used for freezing a task. Although for real safety, the task would have to give
some form of hint that it can be safely freezed at this very moment, i.e. that
it isn't in the middle of something time-critical such as interprocess communication.
Ciao!
... "Counselor, may I -uh- use yer combadge?"
- --
===--- - - -
Eric Sauvageau http://www.thule.no/~merlin/ merlin@thule.no
Amiga wizard known as Merlin, casting with E runes, resulting in:
DevsMan - MFormat - NewIcons4 - SysInspector - XPKatana
- - - - ---===
------- CUT --- CUT --- CUT --- CUT --- CUT --- CUT --- CUT -------
From: Jaco.Schoonen@topic.nl
Subject: <none>
Date: Mon, 9 Mar 1998 21:56:35 +0100
------- CUT --- CUT --- CUT --- CUT --- CUT --- CUT --- CUT -------
Date: Mon, 09 Mar 1998 22:33:11 +0000
From: tucks@pavilion.co.uk (Liz Tucker)
Subject: GamesMasterSystem library
Hi,
I am currently a Blitz Basic programmer but I was looking to move to C.
However I have had the GMS library mentioned to me and try as I may, I
can`t get any of the included sources to link correctly.
Then I read about the E support for the library so I decided to look at
the E language and I find that it compiles the GMS sources perfectly. :)
So my first two questions to the list are...
1. Does anyone else use the GMS library who could offer me any advice as
a newbee to E and the lib (off of the list if necessary).
2. C and E appear very similar in syntax at first glance. What
advantages (and disadvantages if any) are there to using E as opposed to
C which is of course used universally?? Apart from the OOP included in E
which I would need C++ for.
See you,
Liz.
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
tucks@pavilion.co.uk
4437135@pager.mirabilis.com http://wwp.mirabilis.com/4437135
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
Desktop Corruption - Team Leader http://deskcorruption.home.ml.org
Email us at............ deskcorruption@thehub.u-net.com
Current Project.......... Dafel:Bloodline
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
------- CUT --- CUT --- CUT --- CUT --- CUT --- CUT --- CUT -------
From: jj@it.kth.se (Janne Johansson)
Subject: Re: Re[2]: Freezing a process/task
Date: Tue, 10 Mar 1998 09:16:05 +0100
> > > for my 'EasyPlayer' (will develop to a configurable modplayer using
> > > external players like sidplay and mpega...) I'd need to know how to freeze
> > > a process/task like sysmonitors like Xoper or Scout do. I need this to
> > > freeze the external launched programs and pause them - hard method but I
> > > don't see why I shouldn't do it :)
> >
> > One easy way is to change the TaskPri to -128.
> > Tasks with that prio never get any cpu.
>
> 'Never' is such a strong word :) I saw CPU meters who measure how much CPU is
> available by using such a low-priority task. If the CPU was always 100% loaded,
AFAIK those kind of meters (I've written one myself) actually use
- -127 for that particurlar reason.
> then that low pri task would never get called. But since those CPU meter do
> show more than 0% available, I'd say tasks with such a low priority DO get the
> CPU from time to time.
If you are right, that is. =)
> Would be nice if the Exec scheduler would support a special pri (pri -128 could
> be it) at which it would NEVER schedule the task. Could be nicely and cleanly
> used for freezing a task. Although for real safety, the task would have to give
> some form of hint that it can be safely freezed at this very moment, i.e. that
> it isn't in the middle of something time-critical such as interprocess communication.
Then again, while fiddling with time-sensitive stuff, you are required to
take appropriate precautions anyhow, and since a pri 0 task could lose
cpu for some .5 secs in any case just by having some other task need it
for something else, you still would end up having problems if your
task didn't get CPU every so often.
I am not 100% sure, but I do think this is the case. A -128 task
will never get cpu, but I have no proof at this time that it
actually is that way. Guess it would say so in RKRM Libs or something
similar.
- -------------
"Every girl with sense, loves those dead
presidents..." -Quireboys
Mail: jj<at>it.kth.se
Phone: +46-8-7521444 (work)
Cell: +46-70-740 1440
Http: //www.it.kth.se/~jj
------- CUT --- CUT --- CUT --- CUT --- CUT --- CUT --- CUT -------
From: a9660319@wlv.ac.uk
Subject: Re: GamesMasterSystem library
Date: Tue, 10 Mar 1998 09:46:22 -0500 (EST)
On Mon, 09 Mar 1998 22:33:11 +0000 Liz Tucker <tucks@pavilion.co.uk>
wrote:
> Hi,
Hi Liz.
> However I have had the GMS library mentioned to me and try as I may, I
> can`t get any of the included sources to link correctly.
What is the GMS library? And what does it do?
> 1. Does anyone else use the GMS library who could offer me any advice
> as
> a newbee to E and the lib (off of the list if necessary).
>
> 2. C and E appear very similar in syntax at first glance. What
> advantages (and disadvantages if any) are there to using E as opposed to
> C which is of course used universally?? Apart from the OOP included in E
> which I would need C++ for.
Mostly I like the clearer syntax, as it makes more sense than C, but,
one of the big problems I think is support for other processors, and
computers. Becasue E is a proprietry language, it`s not east to convert
between other computers, and if you want to use different comps, then
you need C++ - :(
A big advantage is the pointer system, (once you get the hang of it :),
as all variables are pointers, you don`t need to litter your source
with & and * and . and ->.
>
> See you,
>
> Liz.
Thanks.
Andrew :)
------- CUT --- CUT --- CUT --- CUT --- CUT --- CUT --- CUT -------
Date: Tue, 10 Mar 1998 09:25:10 GMT
From: jason@fsel.com (Jason Hulance)
Subject: Re: GamesMasterSystem library
Liz Tucker <tucks@pavilion.co.uk> wrote:
> I am currently a Blitz Basic programmer but I was looking to move to C.
>
> However I have had the GMS library mentioned to me and try as I may, I
> can`t get any of the included sources to link correctly.
Isn't C fun? I guess you weren't using the same C compiler (or the same
setup) as the programmer...
> Then I read about the E support for the library so I decided to look at
> the E language and I find that it compiles the GMS sources perfectly. :)
Of course. There's only one implementation of E, so if it compiles for
the programmer it'll (pretty much) always work for you.
> 2. C and E appear very similar in syntax at first glance. What
> advantages (and disadvantages if any) are there to using E as opposed to
> C which is of course used universally?? Apart from the OOP included in E
> which I would need C++ for.
Disadvantages:
o Amiga-specific
o Few optimisations done by the compiler
o Effectively no type checking
o Doesn't split code into hunks (only an issue for large programs).
Advantages:
o Blisteringly fast at compiling
o Small executables usually
o Executables run as fast as you like (if you use in-line assembly
and/or manual optimisation)
o Simpler syntax than C (it looks a lot like Pascal/Modula-2).
o Decent exception handling
o Lots and lots of other things... (see E.guide in the Docs directory
of the current distribution).
Cheers!
- --
The conundrum for today is "oupfketlc".
Your numbers are 50, 7, 2, 5, 2 and 3. The target value is 580.
======================================================================
Jason R. Hulance Email: jason@fsel.com
Formal Systems (Europe) Ltd Tel: [+44] (0)1865 728460
3 Alfred Street, Oxford OX1 4EH, UK Fax: [+44] (0)1865 201114
------- CUT --- CUT --- CUT --- CUT --- CUT --- CUT --- CUT -------
From: stv@minorisa.es ("Esteve Boix")
Date: Tue, 10 Mar 1998 12:49:52 +0000
Subject: Re: GamesMasterSystem library
> Disadvantages:
>
> o Amiga-specific
True
> o Few optimisations done by the compiler
True... For those of us who don't know ASM, this is quite a
problem... For sure, EC v3.4 will apply heavy optimisations to the
code, making it way faster :)
> o Effectively no type checking
But this is a part of the language, isn't it ?
> o Doesn't split code into hunks (only an issue for large programs).
Why is better to split code in hunks ? (this is a question, I don't
know what a "hunk" is)
Esteve
- --
Esteve Boix - stv@minorisa.es
------- CUT --- CUT --- CUT --- CUT --- CUT --- CUT --- CUT -------
From: jj@it.kth.se (Janne Johansson)
Subject: Re: GamesMasterSystem library
Date: Tue, 10 Mar 1998 13:02:14 +0100
> > 2. C and E appear very similar in syntax at first glance. What
> > advantages (and disadvantages if any) are there to using E as opposed to
> > C which is of course used universally?? Apart from the OOP included in E
> > which I would need C++ for.
>
> Disadvantages:
>
> o Amiga-specific
> o Few optimisations done by the compiler
> o Effectively no type checking
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Hey, wait a minute. This one is at the wrong side. ;-)
> o Doesn't split code into hunks (only an issue for large programs).
>
> Advantages:
>
> o Blisteringly fast at compiling
> o Small executables usually
> o Executables run as fast as you like (if you use in-line assembly
> and/or manual optimisation)
> o Simpler syntax than C (it looks a lot like Pascal/Modula-2).
> o Decent exception handling
8<
- -------------
"Every girl with sense, loves those dead
presidents..." -Quireboys
Mail: jj<at>it.kth.se
Phone: +46-8-7521444 (work)
Cell: +46-70-740 1440
Http: //www.it.kth.se/~jj
------- CUT --- CUT --- CUT --- CUT --- CUT --- CUT --- CUT -------
Date: Tue, 10 Mar 1998 13:29:32 +0100 (MET)
From: rade@coli.uni-sb.de (Ralph Debusmann)
Subject: Re: GamesMasterSystem library
> > o Few optimisations done by the compiler
>
> True... For those of us who don't know ASM, this is quite a
> problem... For sure, EC v3.4 will apply heavy optimisations to the
> code, making it way faster :)
How do you know? Did Wouter say anything like that? And if so, is there
any timeschedule for 3.4?
> > o Effectively no type checking
>
> But this is a part of the language, isn't it ?
Sure, but it makes it way easier to make big mistakes and not to find them
easily. I hate it when I made a mistake which the compiler didn't find
because of the lacking type checking and my machine goes to India.
Ciao, Ralph
- --
Fachschaft CL, Geb. 17.3, Raum 6.03 (Keller), Tel.: 0681-302-4178
HiWi im Projekt LISA, Geb. 17.3, Raum 1.11, Tel.: 0681-302-4496
Homepage, http://www.coli.uni-sb.de/~rade
------- CUT --- CUT --- CUT --- CUT --- CUT --- CUT --- CUT -------
From: stv@minorisa.es ("Esteve Boix")
Date: Tue, 10 Mar 1998 13:36:30 +0000
Subject: Re: GamesMasterSystem library
> How do you know? Did Wouter say anything like that? And if so, is
> there any timeschedule for 3.4?
I was just wondering/joking :) I didn't want to start a false rumour!
Esteve
- --
Esteve Boix - stv@minorisa.es
------- CUT --- CUT --- CUT --- CUT --- CUT --- CUT --- CUT -------
Date: Tue, 10 Mar 1998 14:01:29 +0100 (MET)
From: rade@coli.uni-sb.de (Ralph Debusmann)
Subject: Re: GamesMasterSystem library
On Tue, 10 Mar 1998, Esteve Boix wrote:
> > How do you know? Did Wouter say anything like that? And if so, is
> > there any timeschedule for 3.4?
>
> I was just wondering/joking :) I didn't want to start a false rumour!
Ok, got it :) Would be nice to have an optimize option nevertheless...
Ciao, Ralph
- --
Fachschaft CL, Geb. 17.3, Raum 6.03 (Keller), Tel.: 0681-302-4178
HiWi im Projekt LISA, Geb. 17.3, Raum 1.11, Tel.: 0681-302-4496
Homepage, http://www.coli.uni-sb.de/~rade
------- CUT --- CUT --- CUT --- CUT --- CUT --- CUT --- CUT -------
Date: Tue, 10 Mar 1998 13:10:51 GMT
From: jason@fsel.com (Jason Hulance)
Subject: Re: GamesMasterSystem library
"Esteve Boix" <stv@minorisa.es> quoted and wrote:
> > Disadvantages:
> >
> > o Amiga-specific
>
> True
>
> > o Few optimisations done by the compiler
>
> True... For those of us who don't know ASM, this is quite a
> problem... For sure, EC v3.4 will apply heavy optimisations to the
> code, making it way faster :)
I wouldn't hold your breath. Wouter has said he thinks it *is* possible
to add some optimisations to the compiler, but not with the current
sources... (Hmmm... reminds me of another conversation I'm having with
him at the moment...)
> > o Effectively no type checking
>
> But this is a part of the language, isn't it ?
Yes, and in some ways it's a big advantage. But people new to the
language (like the person who asked the question) are likely to fall
foul of it, especially if they've just learnt about the type safety in
C...
> > o Doesn't split code into hunks (only an issue for large programs).
>
> Why is better to split code in hunks ? (this is a question, I don't
> know what a "hunk" is)
The Amiga can support programs with their code split into little lumps.
(Of course, the compiler has to be able to generate these lumps so that
the program still works properly -- E plays safe and makes just the one
lump.) A large program benefits a lot from this, because smaller pieces
are more likely to fit into your Amiga's memory (since it's bound to be
fragmented to a certain degree). Your program ends up scattered (in its
little hunk lumps) in memory in the available slots.
Say your program was 100Kb. If it's in one hunk then the Amiga needs to
find a contiguous 100Kb lump of memory to load it into. This is less
likely to be possible than finding ten 10Kb lumps of memory to fit ten
10Kb hunks into...
The complexity for the compiler is to find a good strategy for dividing
the program into hunks (for E, this would probably be at module
boundaries), and to generate the correct code and information so that
references between the hunks could be relocated. And I'm sure there are
other problems, too.
Cheers!
- --
The conundrum for today is "xoeimptne".
Your numbers are 100, 4, 4, 9, 9 and 1. The target value is 906.
======================================================================
Jason R. Hulance Email: jason@fsel.com
Formal Systems (Europe) Ltd Tel: [+44] (0)1865 728460
3 Alfred Street, Oxford OX1 4EH, UK Fax: [+44] (0)1865 201114
------- CUT --- CUT --- CUT --- CUT --- CUT --- CUT --- CUT -------
Date: Tue, 10 Mar 1998 15:15:02 +0100 (MET)
From: rade@coli.uni-sb.de (Ralph Debusmann)
Subject: Re: GamesMasterSystem library
On Tue, 10 Mar 1998, Jason Hulance wrote:
> > > o Doesn't split code into hunks (only an issue for large programs).
> >
> > Why is better to split code in hunks ? (this is a question, I don't
> > know what a "hunk" is)
>
> The Amiga can support programs with their code split into little lumps.
> (Of course, the compiler has to be able to generate these lumps so that
> the program still works properly -- E plays safe and makes just the one
> lump.) A large program benefits a lot from this, because smaller pieces
> are more likely to fit into your Amiga's memory (since it's bound to be
> fragmented to a certain degree). Your program ends up scattered (in its
> little hunk lumps) in memory in the available slots.
E's simple compiler strategy isn't that bad in my opinion, you'll have
less memory fragmentation, and with the compiler spitting out quite small
executables (I don't think there is any E-executable >300K or so) I don't
think this is so much of a drawback. Even Amiga users have around 4-8Megs
standardly by now, and I don't think memory will be ever fragmented so
badly that you don't have a 300K block left. By using an allocmem-patch
(PoolMem, FragCure...) this risk can even be diminished further.
Ciao, Ralph
- --
Fachschaft CL, Geb. 17.3, Raum 6.03 (Keller), Tel.: 0681-302-4178
HiWi im Projekt LISA, Geb. 17.3, Raum 1.11, Tel.: 0681-302-4496
Homepage, http://www.coli.uni-sb.de/~rade
------- CUT --- CUT --- CUT --- CUT --- CUT --- CUT --- CUT -------
Date: Tue, 10 Mar 1998 14:39:52 +0000 (GMT)
From: sac@csd.abdn.ac.uk ("Stuart Caie (kyz)")
Subject: Re: GamesMasterSystem library
On Tue, 10 Mar 1998, Esteve Boix wrote:
=>> o Few optimisations done by the compiler
=>
=>True... For those of us who don't know ASM, this is quite a
=>problem... For sure, EC v3.4 will apply heavy optimisations to the
=>code, making it way faster :)
Well, I ought to explain that if you disassemble E output (with adis or IRA or
something) then feed it to POpt, it does make quite a good job. Obviously the
compiler itself could do a *little* better (expression simplifying,
constant-culling, more effective startup), but apart from that the compiler
should be left alone for optimisation, as it is more an amiga-specific thing
than a language thing. You'll only want backbreaking optimisation for the
finished product, IMHO.
=>> o Doesn't split code into hunks (only an issue for large programs).
=>
=>Why is better to split code in hunks ? (this is a question, I don't
=>know what a "hunk" is)
Well, basically, lots of code-hunks in an executable is *not* a desired effect,
*BUT* a _reasonable_ amount of it _is_ a good thing. Mainly, it makes a
'large' program fit in memory easier, and it gives better output for debugging
so you can see 'program bla failed, hunk 12 offset 3932' rather than 'program
bla failed, hunk 0 offset 2929293283298329832'.
Also, _I_ would like to see a better linker, as the current one is not very
friendly - it demands that all dependancies are resolved at creation time, and
it only allows one single code hunk. Bleeeargh. There should be code _and_ data
hunks, so the data-hunk could be write-protected by debugging tools.
And o2m is pants. I'd love to use E internal functions when writing
super-optimised asm code, as the internal assembler of E is worse than useless.
CMP A0,A1 is a 'bad addressing mode', for example, which it never has been and
never will be, and then there's all the back-breaking uppercase, ... just to
get the features that are allowed to E-compiled modules linked in, but NOT to
o2m'ed modules linked in. But why should I flame o2m when it does an effective
job itself?
Only XDEFs allowed, no XREFs
At most one relochunk expected
Only hunk_code, hunk_ext and hunk_reloc32 allowed
Anyway, one can do something like so:
PROC main()
DEF a4, a:PTR TO LONG
a:=[
'stdout', {stdout},
'conout', {conout},
'stdin', {stdin},
'arg', {arg},
'wbmessage', {wbmessage},
'execbase', {execbase},
'dosbase', {dosbase},
'intuibase', {intuitionbase},
'gfxbase', {gfxbase},
NIL]
MOVE.L A4,a4
WHILE a[] DO WriteF('\s=\d\n', a[]++, a[]++ - a4)
ENDPROC
This generates a handy include-file, so one can write
move.l dosbase(a4),a6
and such.
I shouldn't really complain, after all there were people even back in 1989 who
threw away Lattice C's startup, and wrote their own, and inserted call pragmas
in the code directly, and saved 7kb (!!!) on the size of a 9kb executable. E
isn't nearly as bad as those old C compilers. And I'd rather have E compile in
seconds and only take up <1 disk for a binary distribution...
kyz
Ich werde umgehauen; Doch ich stehe wieder auf; Ihr werdet mich nicht unterkriegen
Er trinkt einen Whisky; Er trinkt einen Wodka; Er trinkt ein Lager; Er trinkt
ein Cider; Er singt die Lieder, die ihn; An die guten Zeiten erinnern; Er singt
die Lieder, die ihn; An die besseren Zeiten erinnern
------- CUT --- CUT --- CUT --- CUT --- CUT --- CUT --- CUT -------
From: merlin@thule.no (Eric Sauvageau)
Date: Tue, 10 Mar 1998 14:47:32 +0500
Subject: Re[2]: GamesMasterSystem library
On Tue, 10 Mar 1998, we received a letter from about 'Re: GamesMasterSystem
library':
> > Disadvantages:
> >
> > o Amiga-specific
>
> True
>
> > o Few optimisations done by the compiler
>
> True... For those of us who don't know ASM, this is quite a
> problem... For sure, EC v3.4 will apply heavy optimisations to the
> code, making it way faster :)
>
> > o Effectively no type checking
>
> But this is a part of the language, isn't it ?
>
> > o Doesn't split code into hunks (only an issue for large programs).
>
> Why is better to split code in hunks ? (this is a question, I don't
> know what a "hunk" is)
Amiga executables are stored on disk as a serie of "hunks". Each hunk has a
special header stating what type of hunk it is, and where it should be loaded/relocated.
Most compiler will support multiple hunks, but EC only generates one big hunk
containing everything.
Two reasons for using multiple hunks:
1) Scatter-loading allow you to load a large file even though your memory might
be fragmented. If you have 1 MB free and the largest blocks are only 200 KB
free, a single-hunked 500 KB exe won't be able to load, but an exe with 5 hunks
of 100 KB might load just fine.
2) Separating data, chipdata and code. That way, you can have the code into
the fastest RAM available, and have any data needing ChipRAM directly loaded
in ChipRAM by the OS (LoadSeg() handles that) instead of ending up in FastRAM
and needing the programmer to manualy copy it to Chip (meaning slower, and wasting
twice the memory). It is also cleaner to have the actual data separated from
the actual code, can't say if there's any practical advantage there beside for
the sake of clean programming techniques.
Ciao!
... All I ask is a chance to prove than money can't make me happy.
- --
===--- - - -
Eric Sauvageau http://www.thule.no/~merlin/ merlin@thule.no
Amiga wizard known as Merlin, casting with E runes, resulting in:
DevsMan - MFormat - NewIcons4 - SysInspector - XPKatana
- - - - ---===
------- CUT --- CUT --- CUT --- CUT --- CUT --- CUT --- CUT -------
From: merlin@thule.no (Eric Sauvageau)
Date: Wed, 11 Mar 1998 04:28:11 +0500
Subject: Re[3]: Freezing a process/task
On Wed, 11 Mar 1998, we received a letter from about 'Re: Re[2]: Freezing a
process/task':
> I am not 100% sure, but I do think this is the case. A -128 task
> will never get cpu, but I have no proof at this time that it
> actually is that way. Guess it would say so in RKRM Libs or something
> similar.
- -128 is the same as -127 or -10 if you have no other tasks with a lower pri.
The only thing Exec does with those taskpri is determine in which order it looks
for who gets the next CPU timeslice.
Stuff like Executive might handle them differently, but then, Executive is not
the regular Exec scheduler.
... PATH=harddrive;drawer;desktop;pocket;boxincloset;boxunderdesk
- --
===--- - - -
Eric Sauvageau http://www.thule.no/~merlin/ merlin@thule.no
Amiga wizard known as Merlin, casting with E runes, resulting in:
DevsMan - MFormat - NewIcons4 - SysInspector - XPKatana
- - - - ---===
------- CUT --- CUT --- CUT --- CUT --- CUT --- CUT --- CUT -------
Date: Wed, 11 Mar 1998 18:47:02 +0100
From: gamboni@fastnet.ch (Jacques Gamboni)
Subject: set WA_TrapRMB 'on the fly'
Hello,
they say in the RKRM that we can change the WA_TrapRMB flag when the
window is already open,
but that we must use assembly to change the flag directely. I don't know
assembly, so could someone
tell me how to do it?
Note: the window is an mui window. In fact I always want RMB to be
'trapped' (I do not have menus),
but Mui doesn't seem to allow to change this flag when the window is
opened, so I thought to read
MUI_Window_Window and then change that flag (just after having opened
the window with set(window,
MUIA_Window_Open,MUI_TRUE) ). There is maybe another way to do it?
Maxime
------- CUT --- CUT --- CUT --- CUT --- CUT --- CUT --- CUT -------
Date: Wed, 11 Mar 1998 19:01:08 +0000
From: tucks@pavilion.co.uk (Liz Tucker)
Subject: Re: GamesMasterSystem library
Hi Andrew,
> What is the GMS library? And what does it do?
It is a new library written for games programmers which in an Amiga
library so it can, in theory, be called by any language but the only
languages which are supported with includes and header files etc.
so far are Asm, C and E.
However I had problems compiling the C source examples as they wouldn`t
link correctly which is why I have started to look at E.
Thanks everyone for your replies to my initial question about E as a
language in general.
Check out http://gms.ethos.co.nz/gms/ for more info on GMS. The files
are also available for download from Aminet.
See you,
Liz.
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
tucks@pavilion.co.uk
4437135@pager.mirabilis.com http://wwp.mirabilis.com/4437135
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
Desktop Corruption - Team Leader http://deskcorruption.home.ml.org
Email us at............ deskcorruption@thehub.u-net.com
Current Project.......... Dafel:Bloodline
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
------- CUT --- CUT --- CUT --- CUT --- CUT --- CUT --- CUT -------
Date: Thu, 12 Mar 1998 12:15:22 +0100 (MET)
From: szczepan@cksr.ac.bialystok.pl ("Marcin Juszkiewicz (Szczepan/BlaBla)")
Subject: ListView list handling
Hi !
I'm writing preferences for my MultiView - it is down cutted tooltype
editor. All that I need is module for list handling with inserting node at
requested position. Now I'm using listhandling module but it doesn't have
inserting.
Bye..
- ------
Marcin Juszkiewicz (Szczepan/BlaBla) *Team Amiga*
szczepan@cksr.ac.bialystok.pl http://cksr.ac.bialystok.pl/szczepan/
A1200 BlizzIv 2+8MB RAM 425MB HDD
Author of MultiView for OS 2.0+ -> Aminet:util/sys/2b_mv_os2_x.lha
------- CUT --- CUT --- CUT --- CUT --- CUT --- CUT --- CUT -------
From: frosetti@hotmail.com ("Fabio Rosetti")
Subject: Re: whatis.library
Date: Thu, 12 Mar 1998 03:19:45 PST
>
>Did you write them a mail about this? ;)
>
>Well, thanks a lot, I'll try this out when I get home tonight.
>
>The reason why I want to use whatis.library is to determine the
filetypes
>of music modules for my slowly evolving tiny music player :) I think it
>could be quite nice to not have to check filetypes by myself. I also
use
>the quite ingenious but abandoned BrowserII (which in turn uses
>whatis.library) as my filemanager, so I already have proper filetypes
for
>everything...
>
Hi there!
Maybe you should take a look at BFBPlayer.library. It's a library for
playing modules of various formats. There is a user version
(BFBPlayMasterU.lha) and a developer version (BFBPlayMasterD.lha) on
aminet in mus/play.
Well, Happy programming!
Dennis
PS!
If this this mail looks screwed up, it's because I use Hotmail from
Micro$oft.
______________________________________________________
Get Your Private, Free Email at http://www.hotmail.com
------- CUT --- CUT --- CUT --- CUT --- CUT --- CUT --- CUT -------
From: stv@minorisa.es ("Esteve Boix")
Date: Thu, 12 Mar 1998 12:34:32 +0000
Subject: Re: ListView list handling
> Hi !
>
> I'm writing preferences for my MultiView - it is down cutted
> tooltype
> editor. All that I need is module for list handling with inserting
> node at requested position. Now I'm using listhandling module but it
> doesn't have inserting.
Try the StringNode from AFC. It handles exec-lists of strings
flawlessly :)
Esteve
- --
Esteve Boix - stv@minorisa.es
------- CUT --- CUT --- CUT --- CUT --- CUT --- CUT --- CUT -------
Date: Thu, 12 Mar 1998 11:37:41 +0000 (GMT)
From: sac@csd.abdn.ac.uk ("Stuart Caie (kyz)")
Subject: Re: whatis.library
On Thu, 12 Mar 1998, Fabio Rosetti wrote:
=>PS!
=>If this this mail looks screwed up, it's because I use Hotmail from
=>Micro$oft.
First Hotmail started taking exceptionally long times for no reason, then it
started having bad HTML on its pages, then it started taking days for mail to
get through. It was only a few days after that, that I noticed 'from Microsoft'
on it's front page.
kyz
Ich werde umgehauen; Doch ich stehe wieder auf; Ihr werdet mich nicht unterkriegen
Er trinkt einen Whisky; Er trinkt einen Wodka; Er trinkt ein Lager; Er trinkt
ein Cider; Er singt die Lieder, die ihn; An die guten Zeiten erinnern; Er singt
die Lieder, die ihn; An die besseren Zeiten erinnern
------- CUT --- CUT --- CUT --- CUT --- CUT --- CUT --- CUT -------
Date: Thu, 12 Mar 1998 11:42:13 +0000 (GMT)
From: sac@csd.abdn.ac.uk ("Stuart Caie (kyz)")
Subject: Re: set WA_TrapRMB 'on the fly'
On Wed, 11 Mar 1998, Jacques Gamboni wrote:
=>MUIA_Window_Open,MUI_TRUE) ). There is maybe another way to do it?
You may want to look up ModifyIDCMP() in intuition.
Success = ModifyIDCMP( Window, newIDCMPFlags )
D0 (V37) A0 D0
kyz
Ich werde umgehauen; Doch ich stehe wieder auf; Ihr werdet mich nicht unterkriegen
Er trinkt einen Whisky; Er trinkt einen Wodka; Er trinkt ein Lager; Er trinkt
ein Cider; Er singt die Lieder, die ihn; An die guten Zeiten erinnern; Er singt
die Lieder, die ihn; An die besseren Zeiten erinnern
------- CUT --- CUT --- CUT --- CUT --- CUT --- CUT --- CUT -------
Date: Thu, 12 Mar 1998 13:04:31 +0100 (MET)
From: szczepan@cksr.ac.bialystok.pl ("Marcin Juszkiewicz (Szczepan/BlaBla)")
Subject: GoldED and AmigaE
Hi !
I wrote two scripts for GoldED :
ECompile.ged - compile and run
EDebug.ged - compile and debug
If you make an error than after compilation you will be in error line.
If somebody wants them please write. I can send it tomorrow.
Bye..
- ------
Marcin Juszkiewicz (Szczepan/BlaBla) *Team Amiga*
szczepan@cksr.ac.bialystok.pl http://cksr.ac.bialystok.pl/szczepan/
A1200 BlizzIv 2+8MB RAM 425MB HDD
Author of MultiView for OS 2.0+ -> Aminet:util/sys/2b_mv_os2_x.lha
------- CUT --- CUT --- CUT --- CUT --- CUT --- CUT --- CUT -------
Date: Thu, 12 Mar 98 13:20:30 GMT
From: muttley@lndn.tensor.pgs.com ("Muttley")
Subject: Re: GoldED and AmigaE
Hi,
Yeah! I'd be interested in those scripts.
All the best
Muttley
-----
Muttley@london.pgs.com
A1200(Towerized)/030/881, AmigaOS3.1, 2+32MB RAM, 2.6GB HDD, 24xCD-ROM
______________________________ Reply Separator _________________________________
Subject: GoldED and AmigaE
Author: <amigae-list@intercom.it> at Internet_London
Date: 12/03/98 13:04
Hi !
I wrote two scripts for GoldED :
ECompile.ged - compile and run
EDebug.ged - compile and debug
If you make an error than after compilation you will be in error line.
If somebody wants them please write. I can send it tomorrow.
Bye..
- ------
Marcin Juszkiewicz (Szczepan/BlaBla) *Team Amiga*
szczepan@cksr.ac.bialystok.pl http://cksr.ac.bialystok.pl/szczepan/
A1200 BlizzIv 2+8MB RAM 425MB HDD
Author of MultiView for OS 2.0+ -> Aminet:util/sys/2b_mv_os2_x.lha
------- CUT --- CUT --- CUT --- CUT --- CUT --- CUT --- CUT -------
Date: Thu, 12 Mar 1998 11:57:14 +0100
From: jhjelm@hem.passagen.se (Jonas Hjelm)
Subject: MuiBuilder and AmigaE
Is there anyone out there
who use Muibuilder and AmigaE
and makes program with locale-support?
How do you do it?
//helmet
------- CUT --- CUT --- CUT --- CUT --- CUT --- CUT --- CUT -------
From: a9660319@wlv.ac.uk
Subject: Re: GamesMasterSystem library
Date: Thu, 12 Mar 1998 14:36:01 +0000 (GMT)
> It is a new library written for games programmers which in an Amiga
> library so it can, in theory, be called by any language but the only
> languages which are supported with includes and header files etc.
> so far are Asm, C and E.
YES!
This appears to be exactly what I`m after! HA HA!!! (manic laugh!)
Andrew :)
------- CUT --- CUT --- CUT --- CUT --- CUT --- CUT --- CUT -------
From: frank@cc86.org (Frank Weber)
Date: Fri, 13 Mar 1998 17:33:52 +0100
Subject: Re: MuiBuilder and AmigaE
Hi Jonas,
On 12-M=E4r-98 Jonas Hjelm wrote:
>Is there anyone out there
>who use Muibuilder and AmigaE
well, I am using MUI and AmigaE, and if you really want to
develop programs seriously, forget MUI-Builder and use the
macros instead. This is what makes development *really* powerful.
>and makes program with locale-support?
Yes, I'm doing so, too (together with Cataloger v1.2). If you have any
questions, just ask. :-)
Bye
Frank
- --
Frank Weber Email: frank@cc86.org
74076 Heilbronn URL: http://www.cc86.org/~frank/
PGP key available on request
Amiga Shareware: =B7 CDCat =B7 AFiloFaxPro =B7 AmigaTrainer =B7=
Cheater
MSG online crew member
------- CUT --- CUT --- CUT --- CUT --- CUT --- CUT --- CUT -------
From: stv@minorisa.es ("Esteve Boix")
Date: Fri, 13 Mar 1998 17:48:19 +0000
Subject: Re: MuiBuilder and AmigaE
> well, I am using MUI and AmigaE, and if you really want to
> develop programs seriously, forget MUI-Builder and use the
> macros instead. This is what makes development *really* powerful.
Agree 100%... Use custom classes whenever possible.
Esteve
- --
Esteve Boix - stv@minorisa.es
------- CUT --- CUT --- CUT --- CUT --- CUT --- CUT --- CUT -------
Date: 13 Mar 98 18:06:28 +0100
From: seasons@softhome.net (Lloyd Rosen)
Subject: Programmers wanted
Org: SEASONS / Lloyd Rosen
Reply To: seasons@softhome.net
Hi! I'll take my chance to write this in here, and I'll make it short.
Seasons is a new team of people determined to continue supporting the
Amiga with more quality productions. We're currently on the search of
skilled programmers and pixelers. As I program AmigaE myself, I thought
this can be an interesting place to look ;)
Our main interests are games (preferably with net-support) and tools.
Not many productions have found it's way out there, since we have only
3 programmers (2 AmigaE, 1 C/C++), but we also have two graphicians and 2
musicians. (Plus some other people the cat dragged in ;)
Our current MAIN project is another monkeyisland clone called Z-Files (which
ofcourse is a parody of the well-known tv-series) that is programmed in E (and
some Asm) - we're working on the demo now ("Pilot" :) which is going to be
absolutely great! It will also be ported to (dare I say it) PC and Mac later.
We could use some more artists for this project.
In addition, we have some other projects that would involve more
programmers.
There is no salaries, I'm afraid - but you'll have a bit of fun anyway :)
You don't need to reply here, just send a mail to:
SEASONS@SOFTHOME.NET
Thanks for the attention, and sorry for any inconvenience caused by this
posting. :/
·<Lloyd Rosen>·-·<§EA§ON§>·-·<0x0/E/6502>·-·<SEASONS@SOFTHOME.NET>·
------- CUT --- CUT --- CUT --- CUT --- CUT --- CUT --- CUT -------
Date: Sat, 14 Mar 1998 11:30:11 +0100
From: gamboni@fastnet.ch (Jacques Gamboni)
Subject: 3D-ViRGE programming
I want to write games using the 3D-ViRGE chip of the Cybervision64-3d.
Do someone know how to do it?
Is there a module available that do it?
Maxime
------- CUT --- CUT --- CUT --- CUT --- CUT --- CUT --- CUT -------
From: sanric@ronet.it (Riccardo Santato)
Date: Fri, 13 Mar 1998 17:57:22 +0100
Subject: Easygui backdrop
Is there someone who can tell me how to put a bitmap in the backdrop of an
easygui
window as WBPattern does ?!?
I've put a bitmap on an Intuition Screen. I want to keep it refreshed using
the SetMask() function, but I've no examples on how to do this. Can anyone
help me ?!?
Thanx a lot !
==============================================
Santato Riccardo
sanric@ronet.it
==============================================
------- CUT --- CUT --- CUT --- CUT --- CUT --- CUT --- CUT -------
Date: Mon, 16 Mar 1998 12:11:38 +0000 (GMT)
From: sac@csd.abdn.ac.uk ("Stuart Caie (kyz)")
Subject: Re: 3D-ViRGE programming
On Sat, 14 Mar 1998, Jacques Gamboni wrote:
=>I want to write games using the 3D-ViRGE chip of the Cybervision64-3d.
=>Do someone know how to do it?
=>Is there a module available that do it?
All I know is that Steffen Haeuser is adding 3D functions to his RTGMaster
project, and if you were to use RTGMaster you would allow people with different
cards still to run your programs (hopefully).
kyz
Ich werde umgehauen; Doch ich stehe wieder auf; Ihr werdet mich nicht
unterkriegen. Er trinkt einen Whisky; Er trinkt einen Wodka; Er trinkt ein
Lager; Er trinkt ein Cider. Er singt die Lieder, die ihn; An die guten Zeiten
erinnern.
------- CUT --- CUT --- CUT --- CUT --- CUT --- CUT --- CUT -------
Date: Mon, 16 Mar 1998 16:35:08 +0100 (MET)
From: s879@brems.ii.uib.no (Jan Ove Aase)
Subject: libraries
How can I find out more about the standard libraries included
automatically when compiling. Like the graphics library. Show Module only
tells med the name of the available functions, and how many arguments they
take. Not what kind of argument (types).
Still just a beginner...
____________________________________________________ _ _
\___/
Jan Ove Aase, Fantoft Stud.by, E-921, 5036 Fantoft (o o)__
s879@ii.uib.no \_/\_ \
janove@GalaxyCorp.com ___/) \
http://www.GalaxyCorp.com/janove / ( _\
____________________________________________________ \ _// \\_/
------- CUT --- CUT --- CUT --- CUT --- CUT --- CUT --- CUT -------
Date: Mon, 16 Mar 1998 15:40:54 +0000 (GMT)
From: sac@csd.abdn.ac.uk ("Stuart Caie (kyz)")
Subject: Re: libraries
On Mon, 16 Mar 1998, Jan Ove Aase wrote:
=>How can I find out more about the standard libraries
One word: Autodocs.
kyz
Ich werde umgehauen; Doch ich stehe wieder auf; Ihr werdet mich nicht
unterkriegen. Er trinkt einen Whisky; Er trinkt einen Wodka; Er trinkt ein
Lager; Er trinkt ein Cider. Er singt die Lieder, die ihn; An die guten Zeiten
erinnern.
------- CUT --- CUT --- CUT --- CUT --- CUT --- CUT --- CUT -------
From: stv@minorisa.es ("Esteve Boix")
Date: Mon, 16 Mar 1998 16:51:20 +0000
Subject: Re: libraries
> How can I find out more about the standard libraries included
> automatically when compiling. Like the graphics library. Show Module
> only tells med the name of the available functions, and how many
> arguments they take. Not what kind of argument (types).
I'm not sure to understand you, but if you just want to know the
version of the lib used by your program at runtime, you can open the
lib with a version "0" and then check the version in the libbase
object.
Esteve
- --
Esteve Boix - stv@minorisa.es
------- CUT --- CUT --- CUT --- CUT --- CUT --- CUT --- CUT -------
Date: Mon, 16 Mar 1998 17:46:37 +0100 (MET)
From: rade@coli.uni-sb.de (Ralph Debusmann)
Subject: Re: libraries
On Mon, 16 Mar 1998, Jan Ove Aase wrote:
> How can I find out more about the standard libraries included
> automatically when compiling. Like the graphics library. Show Module only
> tells med the name of the available functions, and how many arguments they
> take. Not what kind of argument (types).
You'd need the 'Includes & Autodocs' from (Commodore) Amiga Inc. The
easiest and cheapest way to get them is to buy the Developer CD 1.1 from
Schatztruhe in Germany. You'd also need the 'RKRM' manuals (at least the
one titled 'Libraries'). They haven't been updated since OS 2.0 and I
don't know whether they are still available.
> Still just a beginner...
Poses no problem, it's even tougher to be an Amiga beginner since there
isn't an overwhelming bunch of literature about our computer in any
bookstore.
Anyway, I still think programming the Amiga is big fun, probably more than
programming any other system, especially in E. The only OS which could
be more fun to program on is BeOS (PPC and soon on Intel), but I haven't
yet got the opportunity to check this out.
Ciao, Ralph
- --
Fachschaft CL, Geb. 17.3, Raum 6.03 (Keller), Tel.: 0681-302-4178
HiWi im Projekt LISA, Geb. 17.3, Raum 1.11, Tel.: 0681-302-4496
Homepage, http://www.coli.uni-sb.de/~rade
------- CUT --- CUT --- CUT --- CUT --- CUT --- CUT --- CUT -------
Date: Mon, 16 Mar 1998 19:46:16 +0100 (MET)
From: szczepan@cksr.ac.bialystok.pl ("Marcin Juszkiewicz (Szczepan/BlaBla)")
Subject: Re: libraries
On Mon, 16 Mar 1998, Ralph Debusmann wrote:
- ->
- ->You'd need the 'Includes & Autodocs' from (Commodore) Amiga Inc. The
- ->easiest and cheapest way to get them is to buy the Developer CD 1.1 from
- ->Schatztruhe in Germany. You'd also need the 'RKRM' manuals (at least the
- ->one titled 'Libraries'). They haven't been updated since OS 2.0 and I
- ->don't know whether they are still available.
Try http://www.redrobe.demon.co.uk/amiga/ - autodocs in LZX archives.
- ------
Marcin Juszkiewicz (Szczepan/BlaBla) *Team Amiga*
szczepan@cksr.ac.bialystok.pl http://cksr.ac.bialystok.pl/szczepan/
A1200 BlizzIv 2+8MB RAM 425MB HDD
Author of MultiView for OS 2.0+ -> Aminet:util/sys/2b_mv_os2_x.lha
------- CUT --- CUT --- CUT --- CUT --- CUT --- CUT --- CUT -------
Date: Tue, 17 Mar 1998 11:49:59 +0100 (MET)
From: rade@coli.uni-sb.de (Ralph Debusmann)
Subject: Re: libraries
> ->You'd need the 'Includes & Autodocs' from (Commodore) Amiga Inc. The
> ->easiest and cheapest way to get them is to buy the Developer CD 1.1 from
> ->Schatztruhe in Germany. You'd also need the 'RKRM' manuals (at least the
> ->one titled 'Libraries'). They haven't been updated since OS 2.0 and I
> ->don't know whether they are still available.
>
> Try http://www.redrobe.demon.co.uk/amiga/ - autodocs in LZX archives.
Wow, dark stuff :) Is this legal? Anyway, it's important that people know
what they're hacking. I recall that the AsmOne 1.30 distribution by TFA
also has the incs and autodocs within one of its archives...
Ciao, Ralph
- --
Fachschaft CL, Geb. 17.3, Raum 6.03 (Keller), Tel.: 0681-302-4178
HiWi im Projekt LISA, Geb. 17.3, Raum 1.11, Tel.: 0681-302-4496
Homepage, http://www.coli.uni-sb.de/~rade
------- CUT --- CUT --- CUT --- CUT --- CUT --- CUT --- CUT -------
Date: Wed, 18 Mar 1998 08:57:05 +0100
From: Fabio.Rotondo@deagostini.it (Fabio Rotondo)
Subject: which CPU?
Hi List,
I am encountering problems in determining the CPU (020/030/040...)
on user's machine.
I have found a useful field in execbase (AttFlags), but I cannot work
out how to find the right CPU...
Any idea?
Ciao,
Fabio
------- CUT --- CUT --- CUT --- CUT --- CUT --- CUT --- CUT -------
Date: Wed, 18 Mar 1998 09:55:20 +0100
From: i2683@www2.uportu.pt (Mark Marques)
Subject: How to read a binary file ?
Sorry for such a simple question but how can I read a binary file in E ?
I am using the old EC3.2a and saw that particular ver has some problems
with strings ... But I can't apply the patch .. :( ...
Another dumb question is this line:
DEF r,y[5]:STRING,buffer
StrCopy(y,buffer)
r:='$' + y
a:=Val(r) correct ?
Being "buffer" a binaryfile read into memory ...
The above lines are call the Guru each time they are executed, but only if
the file is a binary, it works good with ASCII and Text files
I have a 68030, could that be the problem ?
Mark ...
------- CUT --- CUT --- CUT --- CUT --- CUT --- CUT --- CUT -------
Date: Wed, 18 Mar 1998 08:39:22 +0000 (GMT)
From: sac@csd.abdn.ac.uk ("Stuart Caie (kyz)")
Subject: Re: which CPU?
On Wed, 18 Mar 1998, Fabio Rotondo wrote:
=>Hi List,
=>
=> I am encountering problems in determining the CPU (020/030/040...)
=>on user's machine.
=>I have found a useful field in execbase (AttFlags), but I cannot work
=>out how to find the right CPU...
=>Any idea?
PROC cpu()
DEF flags
flags:=execbase.attnflags -> if only execbase was typed
IF flags AND AFF_68040 THEN RETURN 68040 -> 010,020,030,040 set
IF flags AND AFF_68030 THEN RETURN 68030 -> 010,020,030 set
IF flags AND AFF_68020 THEN RETURN 68020 -> 010,020 set
IF flags AND AFF_68010 THEN RETURN 68010 -> 010 set
ENDPROC 68000 -> none set
or something like that
kyz
Ich werde umgehauen; Doch ich stehe wieder auf; Ihr werdet mich nicht
unterkriegen. Er trinkt einen Whisky; Er trinkt einen Wodka; Er trinkt ein
Lager; Er trinkt ein Cider. Er singt die Lieder, die ihn; An die guten Zeiten
erinnern.
------- CUT --- CUT --- CUT --- CUT --- CUT --- CUT --- CUT -------
From: merlin@thule.no (Eric Sauvageau)
Date: Wed, 18 Mar 1998 03:48:19 +0500
Subject: Re: which CPU?
On Wed, 18 Mar 1998, we received a letter from about 'which CPU?':
> Hi List,
>
> I am encountering problems in determining the CPU (020/030/040...)
> on user's machine.
> I have found a useful field in execbase (AttFlags), but I cannot work
> out how to find the right CPU...
> Any idea?
>From ysInspector's code:
EXPORT PROC getCPU()
DEF cpu, flags
flags := exec.attnflags
IF (flags AND $80)
cpu := 68060
ELSEIF (flags AND AFF_68040)
cpu := 68040
ELSEIF (flags AND AFF_68030)
cpu := 68030
ELSEIF (flags AND AFF_68020)
cpu := 68020
ELSEIF (flags AND AFF_68010)
cpu := 68010
ELSE
cpu := 68000
ENDIF
ENDPROC cpu
... I wanna die in my sleep like Daddy, not screaming like his passengers!
- --
===--- - - -
Eric Sauvageau http://www.thule.no/~merlin/ merlin@thule.no
Amiga wizard known as Merlin, casting with E runes, resulting in:
DevsMan - MFormat - NewIcons4 - SysInspector - XPKatana
- - - - ---===
------- CUT --- CUT --- CUT --- CUT --- CUT --- CUT --- CUT -------
From: merlin@thule.no (Eric Sauvageau)
Date: Wed, 18 Mar 1998 03:59:38 +0500
Subject: Re: How to read a binary file ?
On Wed, 18 Mar 1998, we received a letter from about 'How to read a binary file
?':
> Another dumb question is this line:
>
> DEF r,y[5]:STRING,buffer
>
> StrCopy(y,buffer)
> r:='$' + y
> a:=Val(r) correct ?
> Being "buffer" a binaryfile read into memory ...
> The above lines are call the Guru each time they are executed, but only if
> the file is a binary, it works good with ASCII and Text files
> I have a 68030, could that be the problem ?
Reread the section on strings in the docs.
r:='$' + y
r will be equal to the address of the '$' element in your code. You will add
to it the address of the y string, resulting in r being pointing to some random
area of memory.
If you want to manipulate strings, you MUST use the various string functions
(StrCopy(), StrAdd(), StringF() will let you solve about any situation)
If buffer is pointing to binary data, you will not be able to use string functions.
You will have to do something like this:
- - allocate a newbuffer with bufferlen +2 as an ARRAY OF CHAR
- - set newbuffer[0] to '$'
- - Read the binary file and store it at newbuffer+1 (will skip the first byte
where you have '$' stored)
OR
- - Use CopyMem() to copy your binary buffer at newbuffer+1
- - Set the last char in the newbuffer to NULL
BTW if you shove binary data in there, then don't expect Val() to work properly.
It will need ASCII, with a NULL-terminator. If you know for sure that you're
reading an ASCII string, then:
PROC blah(buffer:PTR TO CHAR)
DEF result[10]:STRING
StringF(result,'$\s',buffer)
ENDPROC Val(result)
... Miracle worker, Doctor! I'm a dammit, not a jim... no scratch that...
- --
===--- - - -
Eric Sauvageau http://www.thule.no/~merlin/ merlin@thule.no
Amiga wizard known as Merlin, casting with E runes, resulting in:
DevsMan - MFormat - NewIcons4 - SysInspector - XPKatana
- - - - ---===
------- CUT --- CUT --- CUT --- CUT --- CUT --- CUT --- CUT -------
Date: Wed, 18 Mar 1998 09:01:06 +0000 (GMT)
From: sac@csd.abdn.ac.uk ("Stuart Caie (kyz)")
Subject: Re: How to read a binary file ?
On Wed, 18 Mar 1998, Mark Marques wrote:
=>Sorry for such a simple question but how can I read a binary file in E ?
Just use Read() like anyone else:
- -> make a 2000-byte buffer and read up to 2000 bytes of data from 'myfile'
- -> into this buffer.
MODULE 'exec/memory'
PROC main()
DEF fh, buffer
IF buffer:=AllocMem(2000, MEMF_PUBLIC)
IF fh:=Open('myfile', OLDFILE)
IF Read(fh, buffer, 2000)>=0
bla(buffer)
ENDIF
Close(fh)
ENDIF
FreeMem(buffer, 2000)
ENDIF
ENDPROC
PROC bla(poo:PTR TO CHAR) IS EMPTY -> or whatever
The way you ask suggests you somehow want binary data held in STRING
variables.
If you wanted to copy those 2000 bytes into a STRING variable, something like
this would work:
PROC bla(poo:PTR TO CHAR)
DEF fish:PTR TO CHAR
IF fish:=String(2000)
CopyMem(poo, fish, StrMax(fish)) -> copy no more than string can hold
SetStr(fish, 2000) -> force the length of string to exactly 2000 bytes,
-> regardless of any NIL bytes in the string
ENDIF
ENDPROC
However, I do *not* recommend using the String functions of E to work on binary
datas, as it is usually much more readable to use FOR loops and such to work on
allocated buffers. A general rule is you should only use strings to represent
strings of text!
=>Another dumb question is this line:
=>
=> DEF r,y[5]:STRING,buffer
=>
=> StrCopy(y,buffer)
=> r:='$' + y
'r' becomes a pointer to where the text of 'y' is stored, plus the address of
where a string containing '$' is stored, eg r := $393493E + $3700321, which
makes a totally invalid address miles from anywhere, containing random and
spurious data.
=> a:=Val(r) correct ?
We then ask E to read what is at r. Crashcrashcrash.
=>Being "buffer" a binaryfile read into memory ...
I can't imagine why you'd want to use Val() on binary data, it is only meant
for converting _text_ representations of numbers into actual numbers.
Anyway, if you really do want ASCII considered as a hex value, then the 'right'
way would be:
- -> for example, buffer:='DEADFACE'
DEF str[10]:STRING
StringF(str, '$\s[8]', buffer); a:=Val(str)
However, it looks suspiciously like you want the value of 4 bytes of memory,
which is actually just
a:=Long(buffer)
kyz
Ich werde umgehauen; Doch ich stehe wieder auf; Ihr werdet mich nicht
unterkriegen. Er trinkt einen Whisky; Er trinkt einen Wodka; Er trinkt ein
Lager; Er trinkt ein Cider. Er singt die Lieder, die ihn; An die guten Zeiten
erinnern.
------- CUT --- CUT --- CUT --- CUT --- CUT --- CUT --- CUT -------
From: dissident@mail.telepac.pt (Roberto)
Date: Tue, 17 Mar 1998 19:24:32 -0000
Subject: Re: libraries
On 17-Mar-98, Ralph Debusmann wrote:
>> ->You'd need the 'Includes & Autodocs' from (Commodore) Amiga Inc. The
>> ->easiest and cheapest way to get them is to buy the Developer CD 1.1 from
>> ->Schatztruhe in Germany. You'd also need the 'RKRM' manuals (at least the
>> ->one titled 'Libraries'). They haven't been updated since OS 2.0 and I
>> ->don't know whether they are still available.
>>
>> Try http://www.redrobe.demon.co.uk/amiga/ - autodocs in LZX archives.
>Wow, dark stuff :) Is this legal? Anyway, it's important that people know
>what they're hacking. I recall that the AsmOne 1.30 distribution by TFA
>also has the incs and autodocs within one of its archives...
Actually, the RKRM's are also at the Asmone's site..
- --
rOBERTo ->dissident@mail.telepac.pt<- !wEb pAGe uNDEr cONSTRUCTIOn!
------- CUT --- CUT --- CUT --- CUT --- CUT --- CUT --- CUT -------
From: r.zimmerling@link-dd.cl.sub.de (Rene Zimmerling)
Subject: Re: which CPU?
Date: 19 Mar 1998 16:13:51 +0100
merlin@thule.no (Eric Sauvageau) *schrieb* *am* 17.03.1998 *zu*
Re: which CPU? *folgende* *Worte* :
> On Wed, 18 Mar 1998, we received a letter from about 'which CPU?':
>=20
> > Hi List,
> > =20
> > I am encountering problems in determining the CPU (020/030/040..=
.)
> > on user's machine.
> > I have found a useful field in execbase (AttFlags), but I cannot wor=
k
> > out how to find the right CPU...
> > Any idea?
>=20
> >From ysInspector's code:
>=20
>=20
> EXPORT PROC getCPU()
> DEF cpu, flags
>=20
> flags :=3D exec.attnflags
>=20
> IF (flags AND $80)
> cpu :=3D 68060
> ELSEIF (flags AND AFF_68040)
> cpu :=3D 68040
> ELSEIF (flags AND AFF_68030)
> cpu :=3D 68030
> ELSEIF (flags AND AFF_68020)
> cpu :=3D 68020
> ELSEIF (flags AND AFF_68010)
> cpu :=3D 68010
> ELSE
> cpu :=3D 68000
> ENDIF
> ENDPROC cpu
>=20
And MMU Checking ??
- -- ____________
__ / /
Good Byte sagt Ren=E9 Zimmerling und MicroDot \ \/ / Amiga
Member of Deutsche Amiga Software Schmiede \_\/ Rulez =20
------- CUT --- CUT --- CUT --- CUT --- CUT --- CUT --- CUT -------
From: merlin@thule.no (Eric Sauvageau)
Date: Thu, 19 Mar 1998 16:12:53 +0500
Subject: Re[2]: which CPU?
On Thu, 19 Mar 1998, we received a letter from about 'Re: which CPU?':
> And MMU Checking ??
Impossible to do with any reliability. The CPU itself has no register displaying
if it has a working MMU, and just trying to use it isn't a good test either,
as some EC030 chips have a half-working MMU, but got labeled as EC because the
MMU proved defective during the production test runs.
... "You're gonna kill me? HA! Death: been there, done that!!!" - Sherridan.
- --
===--- - - -
Eric Sauvageau http://www.thule.no/~merlin/ merlin@thule.no
Amiga wizard known as Merlin, casting with E runes, resulting in:
DevsMan - MFormat - NewIcons4 - SysInspector - XPKatana
- - - - ---===
------- CUT --- CUT --- CUT --- CUT --- CUT --- CUT --- CUT -------
From: turrican@starbase.inka.de (Grundler Mathias)
Date: Sat, 21 Mar 1998 18:51:13 +0100
Subject: Re: Easygui backdrop
Am 13-M=E4r-98 schrieb Riccardo Santato:
>Is there someone who can tell me how to put a bitmap in the backdrop of =
an
>easygui
>window as WBPattern does ?!?
Try NewGUI, there`s a Option with which you can fill the Windows Backdrop=
AND/OR Groups with Bitmaps or Patterns...
>I've put a bitmap on an Intuition Screen. I want to keep it refreshed us=
ing
>the SetMask() function, but I've no examples on how to do this. Can anyo=
ne
>help me ?!?
It is not good to draw to the screens bitmap directly, use a window (mayb=
e
a backdropwindow [borderless] instead!).
You could refresh it with BlitBitMapRastPort() or so!
BTW: NewGUI is available via AmiNet (dev/e)
Hope i could help!
- -- =
________ ______
/__ __\ __________()_____ _\ / /\ turrican@starbase.inka.de
\ //\/\\ _/\ _//\\ __//_\\ \/ \ THE DARK FRONTIER
\//____\\/ \/ /__\\_//___\\/\_____\ Softwareentwicklung PD+Share
------- CUT --- CUT --- CUT --- CUT --- CUT --- CUT --- CUT -------
Date: 21 Mar 98 20:32:30 +0100
From: a.milella@teseo.it ("Amedeo Milella")
Subject: Brush2E
Hi all,
I need a program like BRUSH2E (the one I have doesn't work). May anyone help
me?
<tsb>
Amedeo Milella - Amiga Group Italy (sez. Bari)
AG Italia -> http://www.amyresource.it/AGI
mailto:a.milella@teseo.it
<tsb>
------- CUT --- CUT --- CUT --- CUT --- CUT --- CUT --- CUT -------
From: merlin@thule.no (Eric Sauvageau)
Date: Sat, 21 Mar 1998 14:58:41 +0500
Subject: Re: Brush2E
On Sat, 21 Mar 1998, we received a letter from about 'Brush2E':
> Hi all,
>
> I need a program like BRUSH2E (the one I have doesn't work). May anyone help
> me?
And what does this program do exactly?
If it takes an IFF brush and save it as E data, then have a look at ArtPro on
Aminet. I use it to generate chunky data for penmap.image.
... Damage control is easy. Reading Klingon -- that's hard. -- Scotty
- --
===--- - - -
Eric Sauvageau http://www.thule.no/~merlin/ merlin@thule.no
Amiga wizard known as Merlin, casting with E runes, resulting in:
DevsMan - MFormat - NewIcons4 - SysInspector - XPKatana
- - - - ---===
------- CUT --- CUT --- CUT --- CUT --- CUT --- CUT --- CUT -------
From: oeolsson@tmisnet.com (Ola Olsson)
Subject: Screen Mode Requester
Date: Sat, 21 Mar 1998 20:06:33 (-0800)
Can anyone point me to an example of a screen mode requester that
shows all available screens, and returns the chosen screen ID and /or
other screen info to be used to open a screen. I've looked around but
can only find routines to clone existing screens or open screens from
scratch. Sorry if this is a dumb or obvious question.
Thanks,
Ola
- --
/**
/** Ola Olsson
/** oeolsson@tmisnet.com
/** http://www.tmisnet.com/~oeolsson/
/** --naive programmer--
/**
------- CUT --- CUT --- CUT --- CUT --- CUT --- CUT --- CUT -------
Date: Sun, 22 Mar 1998 12:36:14 +0100 (MET)
From: szczepan@cksr.ac.bialystok.pl ("Marcin Juszkiewicz (Szczepan/BlaBla)")
Subject: I need sound.datatype examples.
Hi !
Now I'm writing sample player based on datatypes. For now I have GUI
based on EasyGUI and I can set end of sample, frequency and volume but I
don't know how to set start of sample other then 0.
I checked my player with 8SVX, AIFF and Wave samples - it was ok.
Protracker.datatype - I must work on it. But who knows how to play RAW
samples using datatypes ? (making 8svx headers and newdtobject() from RAM ??)
regards..
- ------
Marcin Juszkiewicz (Szczepan/BlaBla) *Team Amiga*
szczepan@cksr.ac.bialystok.pl http://cksr.ac.bialystok.pl/szczepan/
A1200 BlizzIv 2+8MB RAM 425MB HDD
Author of MultiView for OS 2.0+ -> Aminet:util/sys/2b_mv_os2_x.lha
------- CUT --- CUT --- CUT --- CUT --- CUT --- CUT --- CUT -------
Date: 22 Mar 98 09:33:21 +0100
From: a.milella@teseo.it ("Amedeo Milella")
Subject: Re: Brush2E
In date 21-Mar-98 10:58:41 Eric Sauvageau has wrote to amigae-list about Re:
Brush2E
ES> On Sat, 21 Mar 1998, we received a letter from about 'Brush2E':
>> Hi all,
>>
>> I need a program like BRUSH2E (the one I have doesn't work). May anyon
>> me?
ES> And what does this program do exactly?
ES> If it takes an IFF brush and save it as E data, then have a look at ArtPr
ES> Aminet. I use it to generate chunky data for penmap.image.
It's exactly what I need!! Tnx ;)
<tsb>
Amedeo Milella - Amiga Group Italy (sez. Bari)
AG Italia -> http://www.amyresource.it/AGI
mailto:a.milella@teseo.it
<tsb>
------- CUT --- CUT --- CUT --- CUT --- CUT --- CUT --- CUT -------
Date: Sun, 22 Mar 1998 18:35:07 +0100
From: gamboni@fastnet.ch (Jacques Gamboni)
Subject: confusion of AFC's MODULE and MUI
Hello,
I want to write a program using MUI (so I use the 'libraries/mui'
MODULE)
and also want to read a tooltype in the same program, using the
'afc/tool_type' MODULE.
The problem is that Mui has a macro, get(), that allows reading an
attribute of an object
and the method used by tool_type to get a tool type is also get().
So when I do a
ttype.get('FLAG')
the E compiler thinks I want to use the get() macro (from mui) and says
I've a syntax error
(one argument instead of the three needed by the get() macro)
What should I do to get that tool type? Should I try to do it myself,
without using AFC's
module?
Maxime
------- CUT --- CUT --- CUT --- CUT --- CUT --- CUT --- CUT -------
Date: 22 Mar 98 21:05:12 +0100
From: fsoft@intercom.it (Fabio Rotondo)
Subject: Re: confusion of AFC's MODULE and MUI
On 22-Mar-98 18:35:07 Jacques Gamboni said about confusion of AFC's MODULE and MUI:
>Hello,
>I want to write a program using MUI (so I use the 'libraries/mui'
>MODULE)
>and also want to read a tooltype in the same program, using the
>'afc/tool_type' MODULE.
>The problem is that Mui has a macro, get(), that allows reading an
>attribute of an object
>and the method used by tool_type to get a tool type is also get().
>So when I do a
>ttype.get('FLAG')
>the E compiler thinks I want to use the get() macro (from mui) and says
>I've a syntax error
>(one argument instead of the three needed by the get() macro)
>What should I do to get that tool type? Should I try to do it myself,
>without using AFC's
>module?
>Maxime
Ciao,
Fabio
- --
- ---------------------------+---------------------------------------------
// | Fabio Rotondo e-mail: fsoft@intercom.it
\\X/ Amiga. Feel The Power.| URL: (Amiga!) http://www.intercom.it/~fsoft
+---------------+-- PGP Key avaible on demand --------------------------+
|DOOPSI-GS V1.45| FinalDT V1.00 |Locator.library V1.10|FinalTyper V2.5 |
|MIDIFilter V1.3|SafeLocks V1.00| GTBoxConvPro V1.00 |MIDIBridge V1.00 |
| ReCatIt V2.50 | ARPrefs V1.70 | MouseFlasher V1.05 |WebFX V2.00 |
+---------------+---- PIOS and pOS Developer ---------------------------+
| ** Amiga Web Ring ** : http://www.intercom.it/~fsoft/awr.html |
|Amiga Blast (Web Mag.!!!): http://www.intercom.it/~fsoft/ablast.html |
|Amiga Foundation Classes : http://www.intercom.it/~fsoft/afc.html |
+------------------ Amiga Group Italia (Novara) ------------------------+
"Dumber than advertised!" - Yakko Warner
------- CUT --- CUT --- CUT --- CUT --- CUT --- CUT --- CUT -------
From: apejakov@online.no (Antun Pejakovic)
Date: Sun, 22 Mar 1998 16:52:33 +0100
Subject: MUI List
Hi!
My name is Antun and I am new to this mailing list. I used to program in
pascal and C,
but then I discovered E. The rest is history....
Anyway, I'm working on a MUI prog, and I have a problem I was hoping somebody
could help me with:
Multi column lists and displayhooks.
I know the basics about how it all works.
ex.
DEF lv1, dispHook:hook
...
installhook(dispHook, {dispFunc})
...
Child, lv1:=ListviewObject,
MUIA_Listview_List, ListObject,
InputListFrame,
MUIA_List_DisplayHook, dispHook,
MUIA_List_Format, 'COL=0 BAR, COL=2 BAR, COL=3',
End,
End,
...
But then there is the function itself. There is an example in MUIdocs, but is
in C.
I was hoping someone could help me translate it to E.
It goes somethig like this:
dispFunk(_a1 char **array,_a1 struct Article *at)
{
*array++ = at->FromName;
*array++ = at->FromPath;
*array++ = at->ToName;
*array++ = at->ToPath;
*array++ = at->Date;
*array = at->Subject;
}
The big ??? is (char **array).
Any help is appreciated.
Antun
Antun-Pejakovic.---------------------
apejakov@online.no -
http://home.sol.no/~apejakov/ -
-
Amiga-Hotlist.--------------------------------
http://home.sol.no/~apejakov/amigalink.html -
-
- ----------------------------------------------------->
------- CUT --- CUT --- CUT --- CUT --- CUT --- CUT --- CUT -------
From: merlin@thule.no (Eric Sauvageau)
Date: Sun, 22 Mar 1998 15:16:52 +0500
Subject: Re: I need sound.datatype examples.
On Sun, 22 Mar 1998, we received a letter from about 'I need sound.datatype
examples.':
> Hi !
>
> Now I'm writing sample player based on datatypes. For now I have GUI
> based on EasyGUI and I can set end of sample, frequency and volume but I
> don't know how to set start of sample other then 0.
> I checked my player with 8SVX, AIFF and Wave samples - it was ok.
> Protracker.datatype - I must work on it. But who knows how to play RAW
> samples using datatypes ? (making 8svx headers and newdtobject() from RAM ??)
RAW samples are just that: raw data samples. Meaning there's no header, so no
way for you to recognize it via datatypes. When the user selects the "raw" option
(or if you try to play it as RAW after being unable to recognize the format),
you will probably have to deal directly with audio.device.
... BREAKFAST.COM Halted... Cereal port not responding.
- --
===--- - - -
Eric Sauvageau http://www.thule.no/~merlin/ merlin@thule.no
Amiga wizard known as Merlin, casting with E runes, resulting in:
DevsMan - MFormat - NewIcons4 - SysInspector - XPKatana
- - - - ---===
------- CUT --- CUT --- CUT --- CUT --- CUT --- CUT --- CUT -------
Date: Mon, 23 Mar 1998 09:52:26 +0000 (GMT)
From: sac@csd.abdn.ac.uk ("Stuart Caie (kyz)")
Subject: Re: Screen Mode Requester
On Sat, 21 Mar 1998, Ola Olsson wrote:
=>Can anyone point me to an example of a screen mode requester that
=>shows all available screens, and returns the chosen screen ID and /or
=>other screen info to be used to open a screen. I've looked around but
=>can only find routines to clone existing screens or open screens from
=>scratch. Sorry if this is a dumb or obvious question.
E:Src/Gfx/TextureMapping/screenmodereq_db.e
Also showmodule EModules:libraries/asl and see the fields you can access of
the screenmoderequester object.
kyz
Ich werde umgehauen; Doch ich stehe wieder auf; Ihr werdet mich nicht
unterkriegen. Er trinkt einen Whisky; Er trinkt einen Wodka; Er trinkt ein
Lager; Er trinkt ein Cider. Er singt die Lieder, die ihn; An die guten Zeiten
erinnern.
------- CUT --- CUT --- CUT --- CUT --- CUT --- CUT --- CUT -------
Date: Mon, 23 Mar 1998 09:59:15 +0000 (GMT)
From: sac@csd.abdn.ac.uk ("Stuart Caie (kyz)")
Subject: <none>
Recently I noticed something that is used in the official documentation and
beginner's guide, but never actually explained:
When writing exception handlers:
EXCEPT
means the exception handler is only run if you Raise()/Throw()
EXCEPT DO
means the exception handler is also run with exception=0 at the end of the
procedure it is defined in
Thus, silly things like:
PROC main()
...
Raise()
EXCEPT
...
ENDPROC
can be replaced with EXCEPT DO instead of EXCEPT, and silly things like:
PROC main()
...
EXCEPT DO
IF exception
...
ENDIF
ENDPROC
can be replaced with EXCEPT instead of EXCEPT DO.
Hopefully this unconfuses some people. It certainly unconfused me.
kyz
Ich werde umgehauen; Doch ich stehe wieder auf; Ihr werdet mich nicht
unterkriegen. Er trinkt einen Whisky; Er trinkt einen Wodka; Er trinkt ein
Lager; Er trinkt ein Cider. Er singt die Lieder, die ihn; An die guten Zeiten
erinnern.
------- CUT --- CUT --- CUT --- CUT --- CUT --- CUT --- CUT -------
From: jj@it.kth.se (Janne Johansson)
Subject: Re: <none>
Date: Mon, 23 Mar 1998 11:08:00 +0100
> Recently I noticed something that is used in the official documentation and
> beginner's guide, but never actually explained:
> Thus, silly things like:
>
> PROC main()
> ...
> Raise()
> EXCEPT
> ...
> ENDPROC
Wouldn't it be
PROC main() HANDLE
just to be extremly correct?
- -------------
"Every girl with sense, loves those dead
presidents..." -Quireboys
Mail: jj<at>it.kth.se
Phone: +46-8-7521444 (work)
Cell: +46-70-740 1440
Http: //www.it.kth.se/~jj
------- CUT --- CUT --- CUT --- CUT --- CUT --- CUT --- CUT -------
Date: Mon, 23 Mar 1998 10:19:23 +0000 (GMT)
From: sac@csd.abdn.ac.uk ("Stuart Caie (kyz)")
Subject: Re: <none>
On Mon, 23 Mar 1998, Janne Johansson wrote:
=>Wouldn't it be
=>
=>PROC main() HANDLE
=>
=>just to be extremly correct?
That too, the compiler would agree with you on that :)
kyz
Ich werde umgehauen; Doch ich stehe wieder auf; Ihr werdet mich nicht
unterkriegen. Er trinkt einen Whisky; Er trinkt einen Wodka; Er trinkt ein
Lager; Er trinkt ein Cider. Er singt die Lieder, die ihn; An die guten Zeiten
erinnern.
------- CUT --- CUT --- CUT --- CUT --- CUT --- CUT --- CUT -------
Date: Mon, 23 Mar 1998 11:59:53 +0100
From: ss37@irz301.inf.tu-dresden.de (Sven Steiniger)
Subject: Re: MUI List
> But then there is the function itself. There is an example in MUIdocs, but is
> in C.
> I was hoping someone could help me translate it to E.
> It goes somethig like this:
>
> dispFunk(_a1 char **array,_a1 struct Article *at)
> {
> *array++ = at->FromName;
> *array++ = at->FromPath;
> *array++ = at->ToName;
> *array++ = at->ToPath;
> *array++ = at->Date;
> *array = at->Subject;
> }
>
> The big ??? is (char **array).
That is an pointer to an array that contains pointer to
strings :-)
PROC dispFunk(arr:PTR TO LONG,at:PTR TO article)
arr[]++ := at.fromName
arr[]++ := at.fromPath
arr[]++ := at.toName
arr[]++ := at.toPath
arr[]++ := at.date
arr[] := at.subject
ENDPROC
- --
Sven Steiniger
(ss37@inf.tu-dresden.de - http://www.inf.tu-dresden.de/~ss37)
And always remember: Heaven is not a place, it's a feeling.
------- CUT --- CUT --- CUT --- CUT --- CUT --- CUT --- CUT -------
Date: Mon, 23 Mar 1998 12:21:34 +0100 (MET)
From: szczepan@cksr.ac.bialystok.pl ("Marcin Juszkiewicz (Szczepan/BlaBla)")
Subject: Re: I need sound.datatype examples.
On Sun, 22 Mar 1998, Eric Sauvageau wrote:
- ->> Now I'm writing sample player based on datatypes. For now I have GUI
- ->> Protracker.datatype - I must work on it. But who knows how to play RAW
- ->> samples using datatypes ? (making 8svx headers and newdtobject() from RAM ??)
- ->
- ->RAW samples are just that: raw data samples. Meaning there's no header, so no
- ->way for you to recognize it via datatypes. When the user selects the "raw" option
- ->(or if you try to play it as RAW after being unable to recognize the format),
- ->you will probably have to deal directly with audio.device.
I asked for method to change RAW -> 8SVX by adding 8svx headers in
front of RAW data and then calling NewDTObject(take object form RAM
please). Do I think correct ?? It will works or no ? This is my question.
- ------
Marcin Juszkiewicz (Szczepan/BlaBla) *Team Amiga*
szczepan@cksr.ac.bialystok.pl http://cksr.ac.bialystok.pl/szczepan/
A1200 BlizzIv 2+8MB RAM 425MB HDD
Author of MultiView for OS 2.0+ -> Aminet:util/sys/2b_mv_os2_x.lha
------- CUT --- CUT --- CUT --- CUT --- CUT --- CUT --- CUT -------
From: oeolsson@tmisnet.com (Ola Olsson)
Subject: Re: Screen Mode Requester
Date: Mon, 23 Mar 1998 06:30:03 (-0800)
On Mon, 23 Mar 1998 09:52:26 +0000 (GMT),
"Stuart Caie \(kyz\)" <sac@csd.abdn.ac.uk> wrote about Re: Screen Mode
Requester:
> On Sat, 21 Mar 1998, Ola Olsson wrote:
>
> =>Can anyone point me to an example of a screen mode requester that
> =>shows all available screens, and returns the chosen screen ID and /or
> =>other screen info to be used to open a screen. I've looked around but
> =>can only find routines to clone existing screens or open screens from
> =>scratch. Sorry if this is a dumb or obvious question.
>
> E:Src/Gfx/TextureMapping/screenmodereq_db.e
>
> Also showmodule EModules:libraries/asl and see the fields you can access of
> the screenmoderequester object.
Thank you, I'll will look for those.
- --
/**
/** Ola Olsson
/** oeolsson@tmisnet.com
/** http://www.tmisnet.com/~oeolsson/
/** --naive programmer--
/**
------- CUT --- CUT --- CUT --- CUT --- CUT --- CUT --- CUT -------
Date: 23 Mar 98 09:42:58 +0100
From: seasons@softhome.net (Lloyd Rosen)
Subject: AGF8
w h a t ' s u p i n
S E A S O N S
issue 8
HAS BEEN RENAMED TO
A H E A D G R O O V E F A C T O R 8
23 Mar 1998 (09:37:32)
Yeah! I've improved this newsletter to a totally and uttermost
brainclashing experience - all for you! Just look at the slick and
exclusive design! Have another sniff! Rub your eyes! Suck it in till you
can't breathe! Digest it! Spit it out and stuff it in another way! Enjoy!
Lister "Love is what separates us from the animals"
Rimmer "No, Lister -- what separates us from animals is that we don't
use our tongues to clean our genitals."
-- Red Dwarf `Confidence & Paranoia'
- -÷-=-÷-=-÷-=-÷-=-÷-=-÷-=-÷-=-÷-=-÷-=-÷-=-÷-=-÷-=-÷-=-÷-=-÷-=-÷-=-÷-=-÷-=-÷-
OFFICIAL & COMFIRMED MEMBERLIST AS OF TODAY
"But, I just want to say, over the years, I have come to regard you
as... people I met."
- Rimmer, making his goodbyes in Red Dwarf `Holoship'
- -÷-=-÷-=-÷-=-÷-=-÷-=-÷-=-÷-=-÷-=-÷-=-÷-=-÷-=-÷-=-÷-=-÷-=-÷-=-÷-=-÷-=-÷-=-÷-
-- In Chronological Order and Dolby Surround where available -
Lloyd Rosen ..........NO.. Code, Music, Design, Main Organizing
[seasons@softhome.net] IRC "LloydROSN"
Asm, AmigaE, 6510, Basics, HMTL, Javascript,
Floydmon, THX, DBPro
Pluksel ..............NL.. Music, Design, Ascii, Sysop'ing
[jazz@lobster.demon.nl] IRC "pluksel"
THX, PT, Inform6, CED, /X
Dr. Ice ..............NO.. Code, Sysop'ing, Co-Organizing A
[kaarej@barentsnett.no] IRC "dRICE^SEA"
AmigaE, HTML, ABBS
Thundercat ...........NO.. Sysop'ing, Trading
[mos@powertech.no] IRC "[-TC-]
/X
Tsar1 ................NO.. Graphics, Design, Ascii, Co-Organizing B
[stamdal@online.no] IRC "Tsar1"
?
By7ex ................NO.. Trading, Co-Sysop'ing
[tom-rf@online.no] IRC "By7ex"
Co-sys at "ParaZite" in Norway
Soda .................NO.. Graphics, Main editing
[retro@softhome.net] IRC "Soda^itc"
Dpaint, maineditor "Retro" (Instinct)
Cache ................UK.. Code
[cachedtl@dial.pipex.com] IRC "Cache^DTL"
Asm-One (?)
Naig .................FI.. Code
[jajoki@utu.fi] IRC "naig"
SAS C, C++, Java
Anakin ...............NL.. Graphics, Music, Code
[mjk303@xs4all.nl] IRC "Anakin"
SAS C, Asm, THX, Dpaint
Bastian Frank ........DE.. Code
[bhf@opf.de] IRC "Bastian"
AmigaE, ...?
- -÷-=-÷-=-÷-=-÷-=-÷-=-÷-=-÷-=-÷-=-÷-=-÷-=-÷-=-÷-=-÷-=-÷-=-÷-=-÷-=-÷-=-÷-=-÷-
C O M M U N I C A T I O N S
Lister "Come on, what are you, a man or a munchkin?"
Rimmer "I'm off to see the wizard, the wonderful wizard of Oz."
-- Red Dwarf `Parallel Universe'
- -÷-=-÷-=-÷-=-÷-=-÷-=-÷-=-÷-=-÷-=-÷-=-÷-=-÷-=-÷-=-÷-=-÷-=-÷-=-÷-=-÷-=-÷-=-÷-
Seasons Spamming List
handled by Naig
('Sealist')
[seasons@ecstacy.yok.utu.fi]
- ÷ -
Seasons Spanking Channel
bot 'Cornell' handled by Anakin
(not yet permanently up)
[#seasons/IRCNet]
- ÷ -
Seasons Official Site
handled by Lloyd and Pluksel
(not yet up)
[http:// ?]
- ÷ -
- -÷-=-÷-=-÷-=-÷-=-÷-=-÷-=-÷-=-÷-=-÷-=-÷-=-÷-=-÷-=-÷-=-÷-=-÷-=-÷-=-÷-=-÷-=-÷-
N E W S
Rimmer "You? How did you get into art college?"
Lister "The same way you always get into art college. The same old
usual boring normal way everyone gets into art college. I
failed my exams and applied... they snapped me up!"
-- Red Dwarf `Thanks for the Memory'
- -÷-=-÷-=-÷-=-÷-=-÷-=-÷-=-÷-=-÷-=-÷-=-÷-=-÷-=-÷-=-÷-=-÷-=-÷-=-÷-=-÷-=-÷-=-÷-
_Bastian Frank_ has joined from Germany. This is a guy with visions about
how the Amiga should be. He's very much into OS programming - and buggered
me somewhat to support gfxcards for ZF (which I ofcourse will now). He's
studying computer science and is currently busy with different projects like
a new taskbar (I know it doesn't sound cool - but it will be :), his own
aguide replacement and . . . well - didn't get the info file yet.
Bastesen here suggested that when we start some kind of major project, plan
it a bit, write some lines of code and post the ideas to the Sealist so that
the other members are able to come with ideas before the project is done.
Well -- do that!
- -÷-=-÷-=-÷-=-÷-=-÷-=-÷-=-÷-=-÷-=-÷-=-÷-=-÷-=-÷-=-÷-=-÷-=-÷-=-÷-=-÷-=-÷-=-÷-
S T A T U S R E P O R T S
"Isn't it about this time your head goes back to the lab for re-tuning?"
-- Rimmer to Kryten in Red Dwarf `The Last Day'
- -÷-=-÷-=-÷-=-÷-=-÷-=-÷-=-÷-=-÷-=-÷-=-÷-=-÷-=-÷-=-÷-=-÷-=-÷-=-÷-=-÷-=-÷-=-÷-
These reports are a quite new thing, but all developers should send in these
reports regularly, so we know who's doing what (avoid double projects) and
who's free to boldly go where no man has gone before. Whenever you start,
finish, cancel, release a new project - send me a note. If you're looking
for something meaningful to do - send me a note. If your head aches - send
me a note. On second thought -- do me a favour and don't do the latter. LR
Who -------------- What -------------------------------------- Prog. -- Rel.
Lloyd Rosen MADCAP Game System/Room Creator 60% no
Zee Files Pilot (demo) 4 Rooms script/code 70% May
Seasons Official Website 10% :) soon
Taskbar ideas ?% ??
Zenzer - puzzle game 0% :) ??
Stockmarket '98 Preliminary MUI design 0% :) ??
Pluksel ZF Pilot - script/music ? ---
Zenzer - music ? ??
Intro Thing - music ? ??
(how about your inform game, plukkfisk? :)
Dr. Ice Shakeratio - Status/Ratio door (ABBS) 100% 20.3
THX-Ripper - THX Music System ripper 3.1 100% out
TTVC - TeleText announcer prog (Norway only) ? ?
StripMe/ReqMe/FindCopy (ABBS doors) ? ?
Stockmarket '98 (4.0) main code 0% ?
- -÷-=-÷-=-÷-=-÷-=-÷-=-÷-=-÷-=-÷-=-÷-=-÷-=-÷-=-÷-=-÷-=-÷-=-÷-=-÷-=-÷-=-÷-=-÷-
S E A S O N S @ S O F T H O M E . N E T
Smoke me a kipper; skipper! I'll be back for breakfast!
- -÷-=-÷-=-÷-=-÷-=-÷-=-÷-=-÷-=-÷-=-÷-=-÷-=-÷-=-÷-=-÷-=-÷-=-÷-=-÷-=-÷-=-÷-=-÷-
------- CUT --- CUT --- CUT --- CUT --- CUT --- CUT --- CUT -------
From: apejakov@online.no (Antun Pejakovic)
Date: Mon, 23 Mar 1998 19:24:45 +0100
Subject: Re: MUI List
On 23-Mar-98, Sven Steiniger wrote:
>> But then there is the function itself. There is an example in MUIdocs, but
>is
>> in C.
>> I was hoping someone could help me translate it to E.
>> It goes somethig like this:
>>
>> dispFunk(_a1 char **array,_a1 struct Article *at)
>> {
>> *array++ = at->FromName;
>> *array++ = at->FromPath;
>> *array++ = at->ToName;
>> *array++ = at->ToPath;
>> *array++ = at->Date;
>> *array = at->Subject;
>> }
>>
>> The big ??? is (char **array).
>That is an pointer to an array that contains pointer to
>strings :-)
> PROC dispFunk(arr:PTR TO LONG,at:PTR TO article)
> arr[]++ := at.fromName
> arr[]++ := at.fromPath
> arr[]++ := at.toName
> arr[]++ := at.toPath
> arr[]++ := at.date
> arr[] := at.subject
> ENDPROC
Thanks, now I understand.
I got my first diplayhook working today based on this ex.
YAHOO!!!
Antun
- --
Antun-Pejakovic.---------------------
apejakov@online.no -
http://home.sol.no/~apejakov/ -
-
Amiga-Hotlist.--------------------------------
http://home.sol.no/~apejakov/amigalink.html -
-
- ----------------------------------------------------->
------- CUT --- CUT --- CUT --- CUT --- CUT --- CUT --- CUT -------
Date: Mon, 23 Mar 1998 18:33:41 +0000 (GMT)
From: sac@csd.abdn.ac.uk ("Stuart Caie (kyz)")
Subject: Re: MUI List
=>>> The big ??? is (char **array).
=>>That is an pointer to an array that contains pointer to
=>>strings :-)
I might add a tuppence and say that (char *bla[]) is always preferable to
(char **bla) - why would anyone ever use char ** anymore?
kyz
Ich werde umgehauen; Doch ich stehe wieder auf; Ihr werdet mich nicht
unterkriegen. Er trinkt einen Whisky; Er trinkt einen Wodka; Er trinkt ein
Lager; Er trinkt ein Cider. Er singt die Lieder, die ihn; An die guten Zeiten
erinnern.
------- CUT --- CUT --- CUT --- CUT --- CUT --- CUT --- CUT -------
From: merlin@thule.no (Eric Sauvageau)
Date: Mon, 23 Mar 1998 16:34:31 +0500
Subject: Re[2]: I need sound.datatype examples.
On Mon, 23 Mar 1998, we received a letter from about 'Re: I need sound.datatype
examples.':
> On Sun, 22 Mar 1998, Eric Sauvageau wrote:
>
> ->> Now I'm writing sample player based on datatypes. For now I have GUI
> ->> Protracker.datatype - I must work on it. But who knows how to play RAW
> ->> samples using datatypes ? (making 8svx headers and newdtobject() from RAM ??)
> ->
> ->RAW samples are just that: raw data samples. Meaning there's no header, so no
> ->way for you to recognize it via datatypes. When the user selects the "raw" option
> ->(or if you try to play it as RAW after being unable to recognize the format),
> ->you will probably have to deal directly with audio.device.
>
> I asked for method to change RAW -> 8SVX by adding 8svx headers in
> front of RAW data and then calling NewDTObject(take object form RAM
> please). Do I think correct ?? It will works or no ? This is my question.
You have no idea what's the right frequency as one. Also, RAW can be 8-bits
like it can also be 16-bits. So RAW playback will have to be done by you, with
the user-supplied parameters (you'd probably default to something like 8-bits
10 KHz when no parameter is defined). Not mentioning that converting to 8SVX
would probably be slow and memory-consuming, depending how different 8SVX data
is from RAW data.
... "Next time, I'LL park the ship" - Picard to Riker, next to saucer's wreck.
- --
===--- - - -
Eric Sauvageau http://www.thule.no/~merlin/ merlin@thule.no
Amiga wizard known as Merlin, casting with E runes, resulting in:
DevsMan - MFormat - NewIcons4 - SysInspector - XPKatana
- - - - ---===
------- CUT --- CUT --- CUT --- CUT --- CUT --- CUT --- CUT -------
From: misha@friko2.onet.pl (Michal Durys)
Date: Mon, 23 Mar 1998 13:42:48 +0100
Subject: Re: I need sound.datatype examples.
On 23-Mar-98 Marcin Juszkiewicz \(Szczepan/BlaBla\) generated such
output:
> I asked for method to change RAW -> 8SVX by adding 8svx headers in
> front of RAW data and then calling NewDTObject(take object form RAM
> please). Do I think correct ?? It will works or no ? This is my
question.
It is possible to convert RAW sample to 8SVX, but there's no sense in
doing this. But if I tried to do this I would make it as follows:
=B7 input frequency from user
=B7 open file and write it to RAM: as a IFF 8SVX using iffparse.library
=B7 play the 8SVX file =
=B7 cleanup
It should work, but I belive that it is a very lame way to achieve
your goal. =
- -- =
+-Misha/El Condor Software-------------misha@friko2.onet.pl
| A1200T / '040 / 34 MB RAM / 850 MB HDD / 4x CD / USR 33.6 =
+--------------Life starts at '030, impotence starts at '86
------- CUT --- CUT --- CUT --- CUT --- CUT --- CUT --- CUT -------
Date: Wed, 25 Mar 1998 09:50:57 +0100
From: i2683@www2.uportu.pt (Mark Marques)
Subject: Still binary file problem...
Despite the fact that with the help of the previous Emails I solved my
initial problem I still have some difficulty regarding the same problem with
a binary file...
How can I avoid the use of the Char() function to get a letter one by one
and then make an Array of Char, to "simulate" a string ?
The other problem is regarding StringF(), It works once but at the second
call it does not write in the correct Estring ...
Example: StringF(a,'\c',buffer[11])
WriteF('\c', a) ---> in this case should appear an "D" in the
stdout, but what appears is an "0" ...
Of course buffer is a Binary file...
if I do something like this :
WriteF('\c', buffer[11]) --> it gives the expected "D" as supposed to.
By using an HexEditor (DiskMon, FileX) applied to the file, I can see all
the text in the ASCII side ...
What I am doing wrong ?
How can I convert Hex codes to ASCII ?
Do I have to use CopyMem or something instead of StringF() ?
Mark Marques
------- CUT --- CUT --- CUT --- CUT --- CUT --- CUT --- CUT -------
From: kolo8@ely.pg.gda.pl (Piotr Gapinski)
Date: Wed, 25 Mar 1998 12:12:40 +0100
Subject: Re: Still binary file problem...
Dnia 25-Mar-98, Mark Marques napisa=EE(a):
>How can I avoid the use of the Char() function to get a letter one by on=
e
>and then make an Array of Char, to "simulate" a string ?
>The other problem is regarding StringF(), It works once but at the secon=
d
>call it does not write in the correct Estring ...
>Example: StringF(a,'\c',buffer[11])
> WriteF('\c', a) ---> in this case should appear an "D" in the
>stdout, but what appears is an "0" ...
try
StringF(a,'\c',buffer+11)
WriteF('\c',a)
Pozdrawiam,
- -----///-----------------------
Piotr Gapinski
mailto: kolo8@ely.pg.gda.pl
------- CUT --- CUT --- CUT --- CUT --- CUT --- CUT --- CUT -------
Date: Wed, 25 Mar 1998 12:30:30 +0100 (MET)
From: subvcbhd@calvados.zrz.TU-Berlin.DE (Henk Jonas)
Subject: Re: Still binary file problem...
On Wed, 25 Mar 1998, Piotr Gapinski wrote:
> Dnia 25-Mar-98, Mark Marques napisa=EE(a):
> >How can I avoid the use of the Char() function to get a letter one by on=
e
> >and then make an Array of Char, to "simulate" a string ?
> >The other problem is regarding StringF(), It works once but at the secon=
d
> >call it does not write in the correct Estring ...
> >Example: StringF(a,'\c',buffer[11])
> > WriteF('\c', a) ---> in this case should appear an "D" in the
> >stdout, but what appears is an "0" ...
This happens cause a is not a char, but a pointer to char (or Estring).
> try
> StringF(a,'\c',buffer+11)
^buffer+11 its a pointer to char, buffer[11] is the
char, and for \c you need a char
> WriteF('\c',a)
^you need a char, but "a" is a pointer to char
try better:
a:=3DString(1)
StringF(a,'\c',buffer[11])
WriteF('\s',a)
or
WriteF('\c',buffer[11])
- ----------------------------------------------------------------
Henk Jonas | subvcbhd@linux.zrz.tu-berlin.de
Student der |
Energietechnik | http://www.cs.tu-berlin.de/~jonash
> Ich lehne Atomenergie als Energiealternative ab! niX=B3 Castor <
- ----------------------------------------------------------------
* AmigaMetaFileFormat * MetaView * Messlabor * Voxelflight *
- ----------------------------------------------------------------
Fuer die 'Mitleser': ANARCHIEBNDAKWPKKRAFRADIKALTNTKPDPDSREVOLUT
------- CUT --- CUT --- CUT --- CUT --- CUT --- CUT --- CUT -------
Date: Wed, 25 Mar 1998 12:59:39 +0100
From: ss37@irz301.inf.tu-dresden.de (Sven Steiniger)
Subject: Re: Still binary file problem...
> By using an HexEditor (DiskMon, FileX) applied to the file, I can see all
> the text in the ASCII side ...
> What I am doing wrong ?
> How can I convert Hex codes to ASCII ?
>
> Do I have to use CopyMem or something instead of StringF() ?
I am new on this list, so I haven't read your previous
mails.
I suppose you wanna read an file an display it as an text
or string, right?
Then try the following:
RAISE "MEM" IF String()=NIL,
"OPEN" IF Open()=NIL
/* Makes an estring from an file.
** Returns the estring or NIL on error.
*/
PROC file2string(name:PTR TO CHAR) HANDLE
DEF fh=NIL, stri=NIL, len
len:=FileLength(name)
IF len<=0 THEN Raise("read") -> Does file exists
?
stri:=String(len+1) -> Allocate new
string
fh:=Open(name, MODE_OLDFILE) -> Open file
IF Read(fh, stri, len)<>len THEN Raise("read") -> read file into
string
stri[len+1]:='\0' -> add zero byte
SetStr(stri, len) -> set the new
string length
EXCEPT DO
Close(fh)
IF exception
-> error, clean up
DisposeLink(stri)
stri:=NIL
ENDIF
ENDPROC stri
- --
Sven Steiniger
(ss37@inf.tu-dresden.de - http://www.inf.tu-dresden.de/~ss37)
And always remember: Heaven is not a place, it's a feeling.
------- CUT --- CUT --- CUT --- CUT --- CUT --- CUT --- CUT -------
From: kolo8@ely.pg.gda.pl (Piotr Gapinski)
Date: Wed, 25 Mar 1998 13:16:08 +0100
Subject: Re: Still binary file problem...
Dnia 25-Mar-98, Henk Jonas napisa=EE(a):
>On Wed, 25 Mar 1998, Piotr Gapinski wrote:
>> Dnia 25-Mar-98, Mark Marques napisa=EE(a):
>> try
>> StringF(a,'\c',buffer+11)
> ^buffer+11 its a pointer to char, buffer[11] is the
>char, and for \c you need a char
yes, u right
>> WriteF('\c',a)
> ^you need a char, but "a" is a pointer to char
look at this:
PROC main()
DEF a[10]:STRING, buffer:PTR TO CHAR
buffer:=3D'testptrtochar'
StringF(a,'\c',buffer[4])
->- WriteF('a =3D \c\n',a) this does't work!!!!
WriteF('a =3D \c\n',a[]) this work fine (for me)
ENDPROC
Pozdrawiam,
- -----///-----------------------
Piotr Gapinski
mailto: kolo8@ely.pg.gda.pl
------- CUT --- CUT --- CUT --- CUT --- CUT --- CUT --- CUT -------
From: a9660319@wlv.ac.uk
Subject: Nil terminated lists... (more pointer stuff...)
Date: Wed, 25 Mar 1998 12:33:51 -0500 (EST)
Hi there list!
Me again. This time, it`s NIL terminated lists, and OO.
Okay, this is what I`m doing:
OBJECT vector
x:INT
y:INT
z:INT
ENDOBJECT
OBJECT face
vectorlist[4]:ARRAY OF vector
fdirec:LONG
/* This is where I think I`m going wrong, as vectorlist[] is an array
of PTRS, but fdirec holds a value, should I put fdirec up in the vector
object, but I`d like it down in facelist, as it makes more sense there!
*/
ENDOBJECT
OBJECT facelist
next:PTR TO facelist
face:PTR TO face
ENDOBJECT
OBJECT structure
head:PTR TO facelist
curr:PTR TO facelist
ENDOBJECT
DEF b[10]:ARRAY OF structure
PROC main()
NEW b
loadstruc(1)
ENDPROC
PROC insert(cbuild, face:PTR TO face, fdirec, ptype=3, pri=0, colour=1) OF structure
/* insert sticks an entry onto the list. */
DEF temp:PTR TO facelist, n
temp:=NewR(SIZEOF facelist)
temp.face:=NewR(SIZEOF face)
/* Are these NewR()`s Okay? will they give me the right amount of
memorey? */
temp.face.fdirec:=fdirec
FOR n:=0 TO 3 -> Copy into array.
temp.face.vectorlist[n].x:=face.vectorlist[n].x
temp.face.vectorlist[n].y:=face.vectorlist[n].y
temp.face.vectorlist[n].z:=face.vectorlist[n].z
ENDFOR
IF self[cbuild].head<>NIL
temp.next:=self[cbuild].head
ELSE
temp.next:=NIL
ENDIF
self[cbuild].head:=temp
ENDPROC
PROC loadstruc(cbuild)
DEF face:face
b.init(cbuild)
face.vectorlist[0].x:=10
face.vectorlist[0].y:=20
face.vectorlist[0].z:=30
b.insert(cbuild, face, 2)
face.vectorlist[0].x:=-110
face.vectorlist[0].y:=-120
face.vectorlist[0].z:=-130
b.insert(cbuild, face,3)
face.vectorlist[0].x:=210
face.vectorlist[0].y:=220
face.vectorlist[0].z:=230
b.insert(cbuild, face,4)
ENDPROC
PROC init(cbuild) OF structure
self[cbuild].head:=NIL
self[cbuild].curr:=NIL
ENDPROC
Sorry to just dump this lot on you, but I`ve already simplified it a
lot, and the book I was using dosn`t cover this bit (it`s in C++)
But for some reason this code causes errors, it dosn`t cause an
enforcer hit, but it is doing GBH to the memorey, as when I run the
same routine, but with a more intensive loadstruc() as soon as I move a
window the machine crashes, etc...
So, what am I doing wrong? This problem has been driving me nuts for
several weeks now!
Again, sorry for making this so long.....
Andrew Hutchins :)
------- CUT --- CUT --- CUT --- CUT --- CUT --- CUT --- CUT -------
Date: Wed, 25 Mar 1998 13:49:35 +0100
From: Fabio.Rotondo@deagostini.it (Fabio Rotondo)
Subject: Re: Nil terminated lists... (more pointer stuff...)
a9660319@wlv.ac.uk wrote:
> DEF b[10]:ARRAY OF structure
>
> PROC main()
> NEW b
This is wrong!!! You should not init with NEW an array... instead:
DEF bb:PTR TO structure
NEW bb.structure() -> is there any constructor for this class??
b[0]:=bb -> this is ok
Look, your code seems to need some OOP shakering :-)
> PROC insert(cbuild, face:PTR TO face, fdirec, ptype=3, pri=0, colour=1) OF structure
> /* insert sticks an entry onto the list. */
> DEF temp:PTR TO facelist, n
>
> temp:=NewR(SIZEOF facelist)
> temp.face:=NewR(SIZEOF face)
>
> /* Are these NewR()`s Okay? will they give me the right amount of
> memorey? */
Yes, but it's better this:
NEW temp
NEW temp.face
> So, what am I doing wrong? This problem has been driving me nuts for
> several weeks now!
There are some problems in memory allocation, as far as I can see,
more: you should not declare an "array" of structure, a list is better.
Try the NodeMaster from the AFC distribuition.
Ciao,
Fabio
------- CUT --- CUT --- CUT --- CUT --- CUT --- CUT --- CUT -------
From: a9660319@wlv.ac.uk
Subject: re: Re: Nil terminated lists... (more pointer stuff...)
Date: Wed, 25 Mar 1998 13:43:25 -0500 (EST)
Fabio Rotondo wrote:
> a9660319@wlv.ac.uk wrote:
>
> > DEF b[10]:ARRAY OF structure
> >
> > PROC main()
> > NEW b
>
> This is wrong!!! You should not init with NEW an array... instead:
Oops! I knoew it was going to be something stupid like this :)
> DEF bb:PTR TO structure
>
> NEW bb.structure() -> is there any constructor for this class
Um.. No, it`s not a class per se, it`s just convenient to use the class
system for now, and when I`m ready to move it over into a proper full
blown class, it`s already half way there. And besides, these routines
are not for public consumption :)
>
> b[0]:=bb -> this is ok
Ah! I get it now! b[0] will now be a PTR TO structure, and I can access
as before...
> Look, your code seems to need some OOP shakering :-)
Umm. Whats that? :)
> > temp:=NewR(SIZEOF facelist)
> > temp.face:=NewR(SIZEOF face)
> >
> > /* Are these NewR()`s Okay? will they give me the right amount of
> > memorey? */
>
> Yes, but it's better this:
>
> NEW temp
> NEW temp.face
Yea, but I`ve been using NewR() so that I learn exactly what it`s
doing, NewR() has only one function, wheras NEW can have a few. Is it
okay to continue using NewR() for mem allocation ala above? If it is,
then I`ll use NewR() as it keeps the code clear at exactly what I`m
doing (speed isn`t an issue in these routines).
> > So, what am I doing wrong? This problem has been driving me nuts for
> > several weeks now!
>
> There are some problems in memory allocation, as far as I can see,
> more: you should not declare an "array" of structure, a list is better.
So, the b[0] thing above, although it works is still probably a bad
idea, right? I was just thinking that. Dosn`t DEF b[MAX]:ARRAY OF
structure grab a bunch of memorey. So it dosn`t make sense to then use
it as a bunch of Pointers.
A list might be better, but I want quick, unambiguous access to a
certain structure,
eg/ b[1] contains the data for a house, and b[2] contains the 3d data
for a fence. Then, a master array, when it wants a house just says, go
and get b[1] when you want the house data.
I suppose I could do this with pointers though... (sorry, I`m thinking
aloud.)
> Try the NodeMaster from the AFC distribuition.
I`m impressed by the AFC, but I need to be able to do this for myself...
Sorry to be so stubborn :)
> Ciao,
>
> Fabio
>
Thanks a lot, you`ve helped already!
Andrew :)
------- CUT --- CUT --- CUT --- CUT --- CUT --- CUT --- CUT -------
Date: Wed, 25 Mar 1998 14:44:41 +0100 (MET)
From: subvcbhd@calvados.zrz.TU-Berlin.DE (Henk Jonas)
Subject: Re: Still binary file problem...
On Wed, 25 Mar 1998, Piotr Gapinski wrote:
> look at this:
> PROC main()
> DEF a[10]:STRING, buffer:PTR TO CHAR
>=20
> buffer:=3D'testptrtochar'
> StringF(a,'\c',buffer[4])
> ->- WriteF('a =3D \c\n',a) this does't work!!!!
again, a is only the pointer and \c want the char self
> WriteF('a =3D \c\n',a[]) this work fine (for me)
[] reference at the first item (char, cause it is a string) of the pointer
> ENDPROC
- ----------------------------------------------------------------
Henk Jonas | subvcbhd@linux.zrz.tu-berlin.de
Student der |
Energietechnik | http://www.cs.tu-berlin.de/~jonash
> Ich lehne Atomenergie als Energiealternative ab! niX=B3 Castor <
- ----------------------------------------------------------------
* AmigaMetaFileFormat * MetaView * Messlabor * Voxelflight *
- ----------------------------------------------------------------
Fuer die 'Mitleser': ANARCHIEBNDAKWPKKRAFRADIKALTNTKPDPDSREVOLUT
------- CUT --- CUT --- CUT --- CUT --- CUT --- CUT --- CUT -------
From: GIMBO@pulse-service.co.uk (Dexter's Music Lab)
Date: Wed, 25 Mar 1998 17:05:22 +0000
Subject: Dynamic String problem
/*This whole mail from here down should be compilable...
Okay, here's a fun one. I've got two dynamically allocated estrings,
which I'm being naughty and storing binary data in. I'm assigning
into them as if they're arrays, and calling SetStr() to set the
length, as advised in the Beginner's Guide.
It all looks OK until I try to add the contents of 'header' into
(the currently empty) 'message'... StrAdd() seems to only copy 2
elements, rather than 5.
So come on, what am I doing wrong? :-) The code should compile and
run as is.
Thanks!
By the way, I'm using strings instead of arrays because strings keep
track of their own length (in my app I need to pass references to
these babies around quite a lot, so I'm trying to tidy things up a bit).
Any and all advice appreciated... :-)
Andy
*/
PROC main() HANDLE
DEF message : PTR TO CHAR
DEF header : PTR TO CHAR
message := String(100) -> allocate memory for 'message'
IF (message = NIL) THEN Raise(1) -> and check it
StrCopy(message , '') -> not necessary to initialise?
-> only did it out of desperation! :-)
header := String(5)
IF (header = NIL) THEN Raise(1)
StrCopy(header , '') -> again, just a desperate attempt to
-> initialise things nicely
WriteF('Header length before: \d\n' , EstrLen(header)) -> it's 0
-> Want to build header one element at a time, so treat it as an array
-> This data relates to MIDI, but it could be anything, right?
header[0] := $F0
header[1] := $41
header[2] := $00
header[3] := $46
header[4] := $12
-> Now need SetStr() to set length properly, as advised in Beginner's
SetStr(header , 5)
WriteF('Header length after: \d\n' , EstrLen(header)) -> it's 5
-> At this point things look good in edbg
WriteF('create_header() returns length: \d\n' , EstrLen(header)) -> 5
WriteF('message before is length: \d\n' , EstrLen(message)) -> 0
StrAdd(message , header , ALL)
-> Only first two elements are copied across, as seen in edbg
WriteF('message after is length: \d\n' , EstrLen(message)) -> 2!!!
-> WHY IS IT 2??? WHY DOESN'T IT COPY ALL 5 ELEMENTS OF HEADER???
EXCEPT DO
IF (message) THEN DisposeLink(message)
IF (header) THEN DisposeLink(header)
ENDPROC
------- CUT --- CUT --- CUT --- CUT --- CUT --- CUT --- CUT -------
Date: Thu, 26 Mar 1998 10:00:58 +0100
From: Fabio.Rotondo@deagostini.it (Fabio Rotondo)
Subject: Re: Dynamic String problem
Dexter's Music Lab wrote:
Andy,
you little guy has made a silly mistake...
> -> Want to build header one element at a time, so treat it as an array
> -> This data relates to MIDI, but it could be anything, right?
> header[0] := $F0
> header[1] := $41
> header[2] := $00
Look: third char is 0!!!
> StrAdd(message , header , ALL)
> -> Only first two elements are copied across, as seen in edbg
>
> WriteF('message after is length: \d\n' , EstrLen(message)) -> 2!!!
Try replacing StrAdd with a cutom routine of your own which does not stop on a
"0" char,
but after all the EstrLen()
Ciao,
Fabio
------- CUT --- CUT --- CUT --- CUT --- CUT --- CUT --- CUT -------
From: GIMBO@pulse-service.co.uk (Dexter's Music Lab)
Date: Thu, 26 Mar 1998 09:18:19 +0000
Subject: Re: Dynamic String problem
> Andy,
>
> you little guy has made a silly mistake...
>
> > -> Want to build header one element at a time, so treat it as an array
> > -> This data relates to MIDI, but it could be anything, right?
> > header[0] := $F0
> > header[1] := $41
> > header[2] := $00
>
> Look: third char is 0!!!
D'OH!
*Slaps forehead in amazement*
Thanks Fabio! From now on, the E community may address me as "Drongo,
King of All Stupid Mistakes".
Well, not really.
> > StrAdd(message , header , ALL)
> > -> Only first two elements are copied across, as seen in edbg
> >
> > WriteF('message after is length: \d\n' , EstrLen(message)) -> 2!!!
>
> Try replacing StrAdd with a cutom routine of your own which does
> not stop on a "0" char, but after all the EstrLen()
Yep, I'll give that a go. Thanks!
Andy
- --
Nigel:
Really they're quite fearful - that's my theory.
They see us on stage with tight trousers we've got, you
know, armadillos in our trousers, I mean it's really quite
frightening...
-This is Spinal Tap
------- CUT --- CUT --- CUT --- CUT --- CUT --- CUT --- CUT -------
Date: Thu, 26 Mar 1998 10:37:30 +0100
From: Fabio.Rotondo@deagostini.it (Fabio Rotondo)
Subject: Re: Dynamic String problem
Dexter's Music Lab wrote:
> *Slaps forehead in amazement*
:-))
> Thanks Fabio! From now on, the E community may address me as "Drongo,
> King of All Stupid Mistakes".
Oh, well, if you are the kind, I should be consider "the Emperor".. ;)
> Yep, I'll give that a go. Thanks!
Sorry, but now I don't have the time for writing it for you...What kind of MIDI
program are you writing?
I would like to write a MIDI Sequencer, ala CuBase
and, for sure, I would be able to cover almost all parts of
the project, but I need someone who can help me
in handling those damn MIDI messages both in input and output....
are you that guy?
(If so, please, send me a private e-mail and not use this m/l)
Ciao,
Fabio, the Emperor ;-)
------- CUT --- CUT --- CUT --- CUT --- CUT --- CUT --- CUT -------
From: stv@minorisa.es ("Esteve Boix")
Date: Thu, 26 Mar 1998 12:02:01 +0000
Subject: Re: Dynamic String problem
> -> Want to build header one element at a time, so treat it as an
> array -> This data relates to MIDI, but it could be anything,
> right? header[0] := $F0 header[1] := $41 header[2] := $00
> header[3] := $46 header[4] := $12
>
> StrAdd(message , header , ALL)
> -> Only first two elements are copied across, as seen in edbg
header[2]=0 !!!!
StrAdd will only consider strings until it finds a NIL char. You'll
have to memcopy(). Better not use Strings, but vars allocated with
NEW.
Esteve
- --
Esteve Boix - stv@minorisa.es
------- CUT --- CUT --- CUT --- CUT --- CUT --- CUT --- CUT -------
From: GIMBO@pulse-service.co.uk (Dexter's Music Lab)
Date: Thu, 26 Mar 1998 13:55:13 +0000
Subject: Re: Dynamic String problem
> header[2]=0 !!!!
>
> StrAdd will only consider strings until it finds a NIL char. You'll
> have to memcopy(). Better not use Strings, but vars allocated with
> NEW.
I'm using strings because I need to pass these streams of MIDI data
(which is all CHARs, essentially) between various methods, and I need
a way to keep track of their length. I saw three options:
1. Pass arrays of chars and their lengths, as seperate parameters.
2. Use strings, since they are essentially arrays of CHARs and keep
track of their own size.
3. Create a midi_data class with an array of CHAR and a size pointer,
these can be dynamically allocated and I write my own methods for
combining them/whatever. Just pass pointer to midi_data then. :-)
(1) looked yucky, (3) looked like overkill, (2) looked just right, at
the time.
Having said that, if I need to write my own function in place of
StrAdd(), maybe I might as well skip straight to (3)... This method
will be more extensible in the future if I need to extend my
functionality, I suppose.
Hmmm, things to think about...
Thanks!
Andy
- --
David: It's such a fine line between stupid an'...
Derek: ...and clever.
David: Yeah, and clever.
-This is Spinal Tap
------- CUT --- CUT --- CUT --- CUT --- CUT --- CUT --- CUT -------
From: stv@minorisa.es ("Esteve Boix")
Date: Thu, 26 Mar 1998 18:26:40 +0000
Subject: Re: Dynamic String problem
> From: GIMBO@pulse-service.co.uk (Dexter's Music Lab)
> Organization: Pulse Service Centre
> To: amigae-list@intercom.it
> Date: Thu, 26 Mar 1998 13:55:13 +0000
> Subject: Re: Dynamic String problem
> Reply-to: amigae-list@intercom.it
> > header[2]=0 !!!!
> >
> > StrAdd will only consider strings until it finds a NIL char. You'll
> > have to memcopy(). Better not use Strings, but vars allocated with
> > NEW.
>
> I'm using strings because I need to pass these streams of MIDI data
> (which is all CHARs, essentially) between various methods, and I
> need a way to keep track of their length. I saw three options:
>
> 1. Pass arrays of chars and their lengths, as seperate parameters.
> 2. Use strings, since they are essentially arrays of CHARs and keep
> track of their own size.
> 3. Create a midi_data class with an array of CHAR and a size
> pointer,
> these can be dynamically allocated and I write my own methods
> for combining them/whatever. Just pass pointer to midi_data
> then. :-)
>
> (1) looked yucky, (3) looked like overkill, (2) looked just right,
> at the time.
>
> Having said that, if I need to write my own function in place of
> StrAdd(), maybe I might as well skip straight to (3)... This method
> will be more extensible in the future if I need to extend my
> functionality, I suppose.
>
> Hmmm, things to think about...
>
> Thanks!
>
> Andy
> --
> David: It's such a fine line between stupid an'...
> Derek: ...and clever.
> David: Yeah, and clever.
>
> -This is Spinal Tap
- --
Esteve Boix - stv@minorisa.es
------- CUT --- CUT --- CUT --- CUT --- CUT --- CUT --- CUT -------
From: stv@minorisa.es ("Esteve Boix")
Date: Thu, 26 Mar 1998 18:26:40 +0000
Subject: Re: Dynamic String problem
> I'm using strings because I need to pass these streams of MIDI data
> (which is all CHARs, essentially) between various methods, and I
> need a way to keep track of their length. I saw three options:
> 3. Create a midi_data class with an array of CHAR and a size
> pointer,
> these can be dynamically allocated and I write my own methods
> for combining them/whatever. Just pass pointer to midi_data
> then. :-)
For sure, creating a midi class is the best solution :) Using OOP
will make future expansion far easy (IMO).
Esteve
- --
Esteve Boix - stv@minorisa.es
------- CUT --- CUT --- CUT --- CUT --- CUT --- CUT --- CUT -------
Date: Fri, 27 Mar 1998 11:04:53 +0100 (MET)
From: szczepan@cksr.ac.bialystok.pl ("Marcin Juszkiewicz (Szczepan/BlaBla)")
Subject: amigaguide.library/OpenAmigaGuideAsyncA()
Hi !
I need any examples how to use function like in subject. I need it for
my MultiView (now is ver. 3.5) to async showing files via datatypes.
- ------
Marcin Juszkiewicz (Szczepan/BlaBla) *Team Amiga*
szczepan@cksr.ac.bialystok.pl http://cksr.ac.bialystok.pl/szczepan/
A1200 BlizzIv 2+8MB RAM 425MB HDD
Author of MultiView for OS 2.0+ -> Aminet:util/sys/2b_mv_os2_x.lha
------- CUT --- CUT --- CUT --- CUT --- CUT --- CUT --- CUT -------
From: mofjelds@online.no (Morten Fjeldstad)
Date: Thu, 26 Mar 1998 21:27:00 +0200
Subject: Newbe question
Hello,
Any way to program TCP/IP applications in AmigaE?
Kind regards
------- CUT --- CUT --- CUT --- CUT --- CUT --- CUT --- CUT -------
Date: Sat, 28 Mar 1998 13:17:05 +0100
From: gamboni@fastnet.ch (Jacques Gamboni)
Subject: debugging
What tools are available to find a bug in an E prog?
I can put some WriteF() statements in some places my program to display
the current state of a variable.
I can use EDBG to see at which place my program crashes/executes a wrong
instruction and so on.
I can use Enforcer to know if my program uses uninitialised pointers or
goes out of the bounds of an array.
What else?
In fact I have a program that has no Enforcer hit but that crashes the
computer when it quits (with EDBG,
just when the last ENDPROC is stepped). So none of these above method
can help me to debug my program..
Maxime
------- CUT --- CUT --- CUT --- CUT --- CUT --- CUT --- CUT -------
Date: 28 Mar 98 14:07:06 +0100
From: kaarej@alpha.barentsnett.no ("Kaare Johansen")
Subject: Audio allocation
Anyone knows how to code a audio de/allocation src in E?.. I can't get
my routine to work.. This means that no sounds will interrupt with
my program, so.. No Displaybeeps will be heard while playing e.g
modules, anyone that could help me.. Or look at this small code:
MODULE 'dos/dos',
'exec/io',
'exec/memory',
'exec/ports',
'devices/audio'
DEF aureq1:PTR TO ioaudio,
aureq2:ioaudio,
reply1,reply2,
ior:PTR TO io,
dev,
ioa:PTR TO ioaudio,
mnode:PTR TO mn
PROC main()
IF reply1:=CreateMsgPort()
IF reply2:=CreateMsgPort()
IF aureq1:=CreateIORequest(reply1, SIZEOF ioaudio)
/* want to allocate and use any channel with OpenDev() */
aureq1.data:=[1,2,4,8]:CHAR
aureq1.length:=4;
ior:=aureq1
ior.command:=ADCMD_ALLOCATE
IF (dev=OpenDevice('audio.device', 0, aureq1, 0))
REPEAT
-> For testing audio alloc only
UNTIL CtrlC()=TRUE
CloseDevice(dev)
ENDIF
DeleteIORequest(aureq1)
ENDIF
ENDIF
DeleteMsgPort(reply2)
ENDIF
DeleteMsgPort(reply1)
ENDPROC
--------------------------------------------------------------------------
_
/\ Kaare Johansen - Dr. Ice/sEASONS - SysOp At TKS _ // AMIGA /\
/ \ USR Courier 28800 V34/V34+X2 - +47-7847-1042 \X/ / \
\ / A4000/030/25MHz/10MB/730MB PC Pentium133/32EDO/1.2GHD \ /
\/ mailto: kaarej@barentsnett.no HTTP://www.barentsnett.no/~kaarej \/
--------------------------- Software used <sb> ---------------------------
Running ABBS v2.x sn: 161 - Coded by JEO, ABBS Support BBS
Thor v2.5a sn: 1202 - Coded by Ultima Thule Software
If you've seen one city slum, you've seen them all. - Spiro Agnew
------- CUT --- CUT --- CUT --- CUT --- CUT --- CUT --- CUT -------
From: gary@empire.u-net.com (Gary Colville)
Date: 28 Mar 1998 00:59:56 0000
Subject: Newbe question
Morten Fjeldstad <mofjelds@online.no> wrote to amigae-list@intercom.it about Newbe question:
> Hello,
> Any way to program TCP/IP applications in AmigaE?
Yes, Amiga E is great for TCP/IP stuff. I've written a complete
E-Mail/News client in E (eval copies available from my web site).
You'll need the AmiTCP E modules from Aminet plus a good book on TCP/IP :)
- -- _
_ // Gary Colville AmigaOS Software Developer
\X/ gary@empire.u-net.com http://www.empire.u-net.com
- --
------- CUT --- CUT --- CUT --- CUT --- CUT --- CUT --- CUT -------
From: dissident@mail.telepac.pt (Roberto)
Date: Fri, 27 Mar 1998 20:18:02 -0000
Subject: Frequency rate
I was wondering if you guys could help me. I need to find the frequency rate
(15 khz, 50hz, etc) of a screen mode using OS functions/structures. Do you
know how to find that info?
- --
rOBERTo ->dissident@mail.telepac.pt<- !wEb pAGe uNDEr cONSTRUCTIOn!
------- CUT --- CUT --- CUT --- CUT --- CUT --- CUT --- CUT -------
Date: Sat, 28 Mar 1998 18:01:17 +0000 (GMT)
From: sac@csd.abdn.ac.uk ("Stuart Caie (kyz)")
Subject: Re: Frequency rate
On Fri, 27 Mar 1998, Roberto wrote:
=> I was wondering if you guys could help me. I need to find the frequency rate
=>(15 khz, 50hz, etc) of a screen mode using OS functions/structures. Do you
=>know how to find that info?
With the displaymode examining functions in graphics.library?
kyz
------- CUT --- CUT --- CUT --- CUT --- CUT --- CUT --- CUT -------
Date: Sat, 28 Mar 1998 18:03:18 +0000 (GMT)
From: sac@csd.abdn.ac.uk ("Stuart Caie (kyz)")
Subject: Re: Audio allocation
On 28 Mar 1998, Kaare Johansen wrote:
=>Anyone knows how to code a audio de/allocation src in E?
Set your allocation priority to 127. See the aminet:dev/asm/CadOS_13.lha
for an example (in asm). If you are hitting audio registers directly, then send
a cmd_reset to the audio.device before deallocating/closing
kyz
Ich werde umgehauen; Doch ich stehe wieder auf; Ihr werdet mich nicht
unterkriegen. Er trinkt einen Whisky; Er trinkt einen Wodka; Er trinkt ein
Lager; Er trinkt ein Cider. Er singt die Lieder, die ihn; An die guten Zeiten
erinnern.
------- CUT --- CUT --- CUT --- CUT --- CUT --- CUT --- CUT -------
Date: Sat, 28 Mar 1998 18:05:28 +0000 (GMT)
From: sac@csd.abdn.ac.uk ("Stuart Caie (kyz)")
Subject: Re: debugging
On Sat, 28 Mar 1998, Jacques Gamboni wrote:
=>In fact I have a program that has no Enforcer hit but that crashes the
=>computer when it quits (with EDBG,
=>just when the last ENDPROC is stepped). So none of these above method
=>can help me to debug my program..
You could be overwriting your own stack (which the E startup code will choke
on). Enforcer can't tell you that. You could have left handler/hook code still
installed, the memory will free on exit and the system calls it as the handler,
.....
My favourite 4 tools are:
MUNGWALL (detects array overruns, mistakes of ^NIL vs NIL, etc)
PATCHWORK (detects bad calls to system functions)
SAFERPATCHES (makes it easier to detect problems when patching the system)
IO_TORTURE (no comment)
kyz
Ich werde umgehauen; Doch ich stehe wieder auf; Ihr werdet mich nicht
unterkriegen. Er trinkt einen Whisky; Er trinkt einen Wodka; Er trinkt ein
Lager; Er trinkt ein Cider. Er singt die Lieder, die ihn; An die guten Zeiten
erinnern.
------- CUT --- CUT --- CUT --- CUT --- CUT --- CUT --- CUT -------
From: merlin@thule.no (Eric Sauvageau)
Date: Sat, 28 Mar 1998 14:20:40 +0500
Subject: Re: debugging
On Sat, 28 Mar 1998, we received a letter from about 'debugging':
> What tools are available to find a bug in an E prog?
> I can put some WriteF() statements in some places my program to display
> the current state of a variable.
> I can use EDBG to see at which place my program crashes/executes a wrong
> instruction and so on.
> I can use Enforcer to know if my program uses uninitialised pointers or
> goes out of the bounds of an array.
> What else?
EFindHit to pinpoint the place in the source code that generated the Enforcer
hit.
PoolWatch to track down any poolmem problems if you use pool mem (which you should
with any half-complex program these days)
> In fact I have a program that has no Enforcer hit but that crashes the
> computer when it quits (with EDBG,
> just when the last ENDPROC is stepped). So none of these above method
> can help me to debug my program..
What guru number? If you get anything else than 80000003/4, then it's very likely
to tell you if it's about memory being freed twice and such.
Mungwall also helps tracking down memory management problems.
... ...NO CARRIER...but I've got 2 destroyers and a frigate.
- --
===--- - - -
Eric Sauvageau http://www.thule.no/~merlin/ merlin@thule.no
Amiga wizard known as Merlin, casting with E runes, resulting in:
DevsMan - MFormat - NewIcons4 - SysInspector - XPKatana
- - - - ---===
------- CUT --- CUT --- CUT --- CUT --- CUT --- CUT --- CUT -------
Date: 29 Mar 98 01:31:27 +0200
From: savel@kaunas.omnitel.net (Levas)
Subject: How to program PCMCIA hardware by E
Hi,
I want to hook some hardware to A1200 PCMCIA socket. The only language quick
enough for my hardware is E. Maybe some one know how to talk with PCMCIA port?
(Example in Aminet is not good because it uses feature that MEM card is mapped
to Amiga RAM)
Bye, Levas
- --
<tsb>Amiga? Amiga... Amiga!
- -- e-mail:savel@kaunas.omnitel.net - http://www1.omnitel.net/savel --
Nobody can be just like me. Even I have trouble.
------- CUT --- CUT --- CUT --- CUT --- CUT --- CUT --- CUT -------
Date: Sun, 29 Mar 1998 11:28:32 +0200
From: gamboni@fastnet.ch (Jacques Gamboni)
Subject: bitmap refreshing
Hi #?,
I still have problems with mui bitmaps/images:
(I already sent a mail 'attribute refreshing with MUI', dated of 1st
March)
I managed to use BitmapObjects, using the 'super_picture' AFC class to
create the bitmap
(BTW: I had to make an array 'manually' to give MUI the correct array,
because MUI needs
three LONG values fo each colour, e.g. $FFFFFFFF,$FFFFFFFF,$FFFFFFFF for
white.
How could I convert the output of .palette() into this format? The
problem with the way I do
it is that I must have the same palette for each image and stick to it).
So I create a BitmapObject with
/*...*/ MUIA_Bitmap_Bitmap,bmp, /*...*/
(I got bmp using the .bitmap() method of super_picture)
Here it works perfectly, the colours are right, the bitmap is correctly
displayed.
Later I have to change the image in it, but I do not manage to do it: I
tried
set(gad,MUIA_Bitmap_Bitmap,newbmp) /*gad being the BitmapObject*/
Mui_Redraw(gad) /*redraw the gadget*/
but nothing happens. If I try to manually resize the window, the bitmap
is still like it was before
the two above lines. When the window is closed and opened again (e.g.
iconification or modification
of the preferences), the bitmaps displays correctly.
(Should I close and open the window from the program every time the
image change? :-(
Maxime
------- CUT --- CUT --- CUT --- CUT --- CUT --- CUT --- CUT -------
Date: 28 Mar 98 19:35:33 +0200
From: Bubu@kueste.leine.de (Friedhelm Bunk)
Subject: UNSUBSCRIBE
UNSUBSCRIBE bubu@kueste.leine.de
------- CUT --- CUT --- CUT --- CUT --- CUT --- CUT --- CUT -------
From: stv@minorisa.es ("Esteve Boix")
Date: Mon, 30 Mar 1998 09:28:07 +0000
Subject: Re: debugging
> PoolWatch to track down any poolmem problems if you use pool mem
> (which you should with any half-complex program these days)
Hey ! I didn't know about poolwatch :)
I absolutely agree about the fact that modern programs should use
mempools.
Esteve
- --
Esteve Boix - stv@minorisa.es
------- CUT --- CUT --- CUT --- CUT --- CUT --- CUT --- CUT -------
Date: Mon, 30 Mar 1998 11:04:52 +0200 (MET DST)
From: s879@brems.ii.uib.no (Jan Ove Aase)
Subject: Binary problem...
How do you check and set/clear singel bits in a variable?
____________________________________________________ _ _
\___/
Jan Ove Aase, Fantoft Stud.by, E-921, 5036 Fantoft (o o)__
s879@ii.uib.no \_/\_ \
janove@GalaxyCorp.com ___/) \
http://www.GalaxyCorp.com/janove / ( _\
____________________________________________________ \ _// \\_/
------- CUT --- CUT --- CUT --- CUT --- CUT --- CUT --- CUT -------
From: GIMBO@pulse-service.co.uk (Dexter's Music Lab)
Date: Mon, 30 Mar 1998 09:31:42 +0000
Subject: Re: debugging
> > PoolWatch to track down any poolmem problems if you use pool mem
> > (which you should with any half-complex program these days)
>
> Hey ! I didn't know about poolwatch :)
>
> I absolutely agree about the fact that modern programs should use
> mempools.
Could someone please explain this interesting sounding concept?
Thanks!
Andy
- --
Marty:
The review you had on 'Shark Sandwich'...which was merely
a two word review - just said "shit sandwich." Umm....
-This is Spinal Tap
------- CUT --- CUT --- CUT --- CUT --- CUT --- CUT --- CUT -------
From: frosetti@hotmail.com ("Fabio Rosetti")
Subject: Re: Newbe question
Date: Mon, 30 Mar 1998 02:14:47 PST
>
>> Hello,
>
>> Any way to program TCP/IP applications in AmigaE?
>
>Yes, Amiga E is great for TCP/IP stuff. I've written a complete
>E-Mail/News client in E (eval copies available from my web site).
>
>You'll need the AmiTCP E modules from Aminet plus a good book on TCP/IP
:)
>
Do you know where we can get example sources in E(C is so messy).
Maybe you got a few :-)
Dennis
______________________________________________________
Get Your Private, Free Email at http://www.hotmail.com
------- CUT --- CUT --- CUT --- CUT --- CUT --- CUT --- CUT -------
From: stv@minorisa.es ("Esteve Boix")
Date: Mon, 30 Mar 1998 12:27:45 +0000
Subject: Re: debugging
> Could someone please explain this interesting sounding concept?
The idea is simple. A pool of memory is an amount of memory that you
allocate, then, using some OS (or no-OS) functions, you allocate the
memory you need from this proviously allocated pool of memory. The
size of the pool will shrink or expand as necessary.
For example, you have a program that will allocate tons of strings.
You could allocate a pool of say, 50k, and then allocate the memory
needed for the strings from this pool.
Using pools speed up memory allocation (a lot, and specially if you
plan to do a lot of small allocations like creating a E-linked list
of estrings) and reduces fragmentation a lot, too.
Another nice side effect is that deleting the pool frees all the
allocated memory, w/o having to free it yourself (something E already
does itself :).
AmigaOS v39+ have built-in pool allocation functions, but there are
some solutions for pre39 systems. There is a module in aminet that
allows to allocate EStrings from a pool, and work with it
transparently.
Esteve
- --
Esteve Boix - stv@minorisa.es
------- CUT --- CUT --- CUT --- CUT --- CUT --- CUT --- CUT -------
Date: Mon, 30 Mar 1998 10:01:42 +0100 (BST)
From: jason@fsel.com (Jason Hulance)
Subject: Re: <none>
"Stuart Caie \(kyz\)" <sac@csd.abdn.ac.uk> wrote:
> Recently I noticed something that is used in the official documentation and
> beginner's guide, but never actually explained:
>
> When writing exception handlers:
>
> EXCEPT
> means the exception handler is only run if you Raise()/Throw()
>
> EXCEPT DO
> means the exception handler is also run with exception=0 at the end of the
> procedure it is defined in
Strangely enough, "EXCEPT DO" is explained in the Exceptions chapter of
the Beginner's Guide. You can find it by using the E Index and clicking
on the "EXCEPT DO" link...
Cheers!
- --
The conundrum for today is "antaleldb".
Your numbers are 100, 4, 2, 3, 5 and 9. The target value is 813.
======================================================================
Jason R. Hulance Email: jason@fsel.com
Formal Systems (Europe) Ltd Tel: [+44] (0)1865 728460
Keble Court, 26 Temple St, Oxford OX4 1JS Fax: [+44] (0)1865 201114
------- CUT --- CUT --- CUT --- CUT --- CUT --- CUT --- CUT -------
Date: Mon, 30 Mar 1998 09:58:07 +0100 (BST)
From: jason@fsel.com (Jason Hulance)
Subject: Re: debugging
Jacques Gamboni <gamboni@fastnet.ch> wrote:
> What tools are available to find a bug in an E prog?
Lots...
> I can put some WriteF() statements in some places my program to display
> the current state of a variable.
That's one way, and usually the quickest and easiest.
> I can use EDBG to see at which place my program crashes/executes a wrong
> instruction and so on.
EDBG is extremely useful for finding difficult problems and controlling
the execution of your code.
> I can use Enforcer to know if my program uses uninitialised pointers or
> goes out of the bounds of an array.
Enforcer helps you spot silly typos/bad algorithms, but the results can
sometimes be misleading if you happen to be running nasty hacks at the
same time...
> What else?
1) A simple 'avail flush' before and after running your program can help
track memory losses (but is subject to nasty hacks, as above).
2) The RKRMs offer some help on common crashes.
3) There's also Explorer, of course. It's easy to integrate calls to
Explorer and you can control the execution of your program, again.
4) If you're doing nasty stuff, multiple tasks, etc. then the DOS
library can be off-limits. In this case you can't use WriteF(), but
you can use a separate program and a shared message port...
5) There are a number of tools out there to track certain resource
allocations (I've used one called CodeWatcher in the past).
6) Cut down your code to the smallest thing you can that still exhibits
the problem. Remove bits, piece by piece, until you start to home in
on the code that is really causing the problem. (This is about the
only way to be confident of something like a compiler bug...)
> In fact I have a program that has no Enforcer hit but that crashes the
> computer when it quits (with EDBG, just when the last ENDPROC is
> stepped). So none of these above method can help me to debug my
> program..
In any language it's easy to make subtle mistakes in your program's
logic and data usage that are near impossible to find using standard
debugging tools. In very high-level languages you're normally spared
the system crashes, though...
- --
The conundrum for today is "paeremelh".
Your numbers are 50, 9, 6, 7, 10 and 1. The target value is 871.
======================================================================
Jason R. Hulance Email: jason@fsel.com
Formal Systems (Europe) Ltd Tel: [+44] (0)1865 728460
Keble Court, 26 Temple St, Oxford OX4 1JS Fax: [+44] (0)1865 201114
------- CUT --- CUT --- CUT --- CUT --- CUT --- CUT --- CUT -------
From: agraham@hal9000.net.au (Ali Graham)
Date: Tue, 31 Mar 1998 00:17:29 +1000
Subject: Re[2]: debugging
On 30-Mar-98, someone (I think it was Jason Hulance) might have
written:
JH> 4) If you're doing nasty stuff, multiple tasks, etc. then the DOS
JH> library can be off-limits. In this case you can't use
WriteF(), but
JH> you can use a separate program and a shared message port...
JH>
In this case, you can always use the routines from debug.m (in dev/e)
and a program like Sushi. (i.e. kprintf() etc.)
A little more roundabout, but it usually works...
Ali.
------- CUT --- CUT --- CUT --- CUT --- CUT --- CUT --- CUT -------
From: mofjelds@online.no (Morten Fjeldstad)
Date: Mon, 30 Mar 1998 17:39:20 +0200
Subject: Re: Newbe question
Hello Gary
On 28-Mar-98, you wrote:
>> Any way to program TCP/IP applications in AmigaE?
> Yes, Amiga E is great for TCP/IP stuff. I've written a complete
> E-Mail/News client in E (eval copies available from my web site).
> You'll need the AmiTCP E modules from Aminet plus a good book on TCP/IP :)
No modules for MIAMI out there?
Morten.
------- CUT --- CUT --- CUT --- CUT --- CUT --- CUT --- CUT -------
From: merlin@thule.no (Eric Sauvageau)
Date: Mon, 30 Mar 1998 15:32:43 +0500
Subject: Re: Binary problem...
On Mon, 30 Mar 1998, we received a letter from about 'Binary problem...':
> How do you check and set/clear singel bits in a variable?
DEF var=$20
/* 0010 0000 */
/* This will set the first bit.
0010 0000
0000 0001 OR
------------
0010 0001
*/
var := var OR $21
/* This will clear the 6th bit
0010 0001
1101 1111 AND
-------------
0000 0001
*/
var := var AND $D1
You simply use hexadecimal masks with the AND and OR operator.
Ciao!
... Life sucks, but Death swallows.
- --
===--- - - -
Eric Sauvageau http://www.thule.no/~merlin/ merlin@thule.no
Amiga wizard known as Merlin, casting with E runes, resulting in:
DevsMan - MFormat - NewIcons4 - SysInspector - XPKatana
- - - - ---===
------- CUT --- CUT --- CUT --- CUT --- CUT --- CUT --- CUT -------
From: merlin@thule.no (Eric Sauvageau)
Date: Mon, 30 Mar 1998 16:39:31 +0500
Subject: Re[2]: debugging
On Mon, 30 Mar 1998, we received a letter from about 'Re: debugging':
> 4) If you're doing nasty stuff, multiple tasks, etc. then the DOS
> library can be off-limits. In this case you can't use WriteF(), but
> you can use a separate program and a shared message port...
In such case, debug.m, kprintf() and Sushi are your best friends. :)
... Miracle worker, Doctor! I'm a dammit, not a jim... no scratch that...
- --
===--- - - -
Eric Sauvageau http://www.thule.no/~merlin/ merlin@thule.no
Amiga wizard known as Merlin, casting with E runes, resulting in:
DevsMan - MFormat - NewIcons4 - SysInspector - XPKatana
- - - - ---===
------- CUT --- CUT --- CUT --- CUT --- CUT --- CUT --- CUT -------
From: LOREJ@IWC-SDT.dssd.sub.org (Jens Lorenz)
Subject: HELP
Date: Mon, 30 Mar 1998 22:58:28 +0200
HELP
.
------- CUT --- CUT --- CUT --- CUT --- CUT --- CUT --- CUT -------
From: gary@empire.u-net.com (Gary Colville)
Date: 31 Mar 1998 03:23:15 0000
Subject: Re: Newbe question
Morten Fjeldstad <mofjelds@online.no> wrote to amigae-list@intercom.it about Re: Newbe question:
>>> Any way to program TCP/IP applications in AmigaE?
>> Yes, Amiga E is great for TCP/IP stuff. I've written a complete
>> E-Mail/News client in E (eval copies available from my web site).
>> You'll need the AmiTCP E modules from Aminet plus a good book on TCP/IP :)
> No modules for MIAMI out there?
Miami uses an API that is AmiTCP compatable so the AmiTCP modules work
just fine.
- -- _
_ // Gary Colville AmigaOS Software Developer
\X/ gary@empire.u-net.com http://www.empire.u-net.com
- --
------- CUT --- CUT --- CUT --- CUT --- CUT --- CUT --- CUT -------
Date: Tue, 31 Mar 1998 15:44:02 +0200 (MET DST)
From: szczepan@cksr.ac.bialystok.pl ("Marcin Juszkiewicz (Szczepan/BlaBla)")
Subject: Re: Re[2]: debugging
On Mon, 30 Mar 1998, Eric Sauvageau wrote:
- ->> 4) If you're doing nasty stuff, multiple tasks, etc. then the DOS
- ->> library can be off-limits. In this case you can't use WriteF(), but
- ->> you can use a separate program and a shared message port...
- ->
- ->In such case, debug.m, kprintf() and Sushi are your best friends. :)
I propose you MungFriend as Sushi replacement. It create reset-proof
buffer and flashes when something going to serial port so you can't miss
hits.
- ------
Marcin Juszkiewicz (Szczepan/BlaBla) *Team Amiga*
szczepan@cksr.ac.bialystok.pl http://cksr.ac.bialystok.pl/szczepan/
A1200 BlizzIv 2+8MB RAM 425MB HDD
Author of MultiView for OS 2.0+ -> Aminet:util/sys/2b_mv_os2_x.lha
------- CUT --- CUT --- CUT --- CUT --- CUT --- CUT --- CUT -------
From: a9660319@wlv.ac.uk
Subject: 2D arrays
Date: Tue, 31 Mar 1998 17:10:48 -0500 (EST)
Hi there list!
E has a limitation, to do with 2D arrays, I need to use large (say,
400x400, LONG) chunk of memorey.
How do you get around this problem? I`ve been using bitmaps, but that
only gives me 0..256, now I need 0..LONG, (Be nice If I could use
floats).
Just some pointers to good source codes, and ideas that I should be
pursuing.
Please try not to continue this thread past Friday, as I don`t have
access to my e-mail after then.
Thanks!
Andrew Hutchins :)
------- CUT --- CUT --- CUT --- CUT --- CUT --- CUT --- CUT -------
From: Peter.Karlsson@swipnet.se (Peter Karlsson)
Date: Tue, 31 Mar 1998 17:48:40 +0100
Subject: Parsing an ASCII prefsfile
Hello,
I'm a newbie to this list and I've got a question which has probably
been asked before. If so, I'm very sorry.
I need to parse a preference file in pure ASCII in a program I'm
working on. And I have absolute no clue how to do this in a "smart"
way. I've asked around and one answer I got was "use ReadArgs()".
Sadly this doesn't make me say "aha". :-) Another solution was
that I should use Tooltypes. Unfortunately I've got about 300 items in
my prefs file, so using Tooltypes would be a bit messy.
So, if any of you people could help me out here, I'd be very grateful.
Kind regards
/Peter
------- CUT --- CUT --- CUT --- CUT --- CUT --- CUT --- CUT -------
Date: 31 Mar 98 20:28:01 +0100
From: seasons@softhome.net (Lloyd Rosen)
Subject: MUI
Somebody mentioned something about MUI macros?
What are these and how do I use them?
And where do I find them?
Regards,
- -÷-=-÷-=-÷-=-÷-=-÷-=-÷-=-÷-=-÷-=-÷-=-÷-=-÷-=-÷-=-÷-=-÷-=-÷-=-÷-=-÷-=-÷-=-÷-
____ ____
Lloyd Rosen _\/\/_ 680x0 ÷ AmigaE ÷ 6510 _\/\/_ `LloydROSN'
÷ ¯¯\/¯¯ Mus¡c ÷ Design ¯¯\/¯¯ on
sEASONS IRCnet
¯¯¯¯¯¯¯ s e a s o n s @ s o f t h o m e . n e t ¯¯¯¯¯¯
- -÷-=-÷-=-÷-=-÷-=-÷-=-÷-=-÷-=-÷-=-÷-=-÷-=-÷-=-÷-=-÷-=-÷-=-÷-=-÷-=-÷-=-÷-=-÷-
------- CUT --- CUT --- CUT --- CUT --- CUT --- CUT --- CUT -------
From: mofjelds@online.no (Morten Fjeldstad)
Date: Tue, 31 Mar 1998 19:37:32 +0200
Subject: IDE
Hello,
Is there a good IDE for AMiga E out there? I tried some editors etc. from
the Aminet. But nothing impessive.
Kind regards
Morten.
------- CUT --- CUT --- CUT --- CUT --- CUT --- CUT --- CUT -------
Date: 31 Mar 98 21:07:07 +0200
From: savel@kaunas.omnitel.net (Levas)
Subject: Re: Parsing an ASCII prefsfile
>I need to parse a preference file in pure ASCII in a program I'm
>working on. And I have absolute no clue how to do this in a "smart"
How about reading text file to RAM. Then you can search for keywords and use
values near keywords?
VERYIMPORTANTVALLUE=58758
Search for VERYIMPORTANTVALLUE= and EOL string. Then analize data between this
words. Add comment keyword to make you config file more cool :)
Oh yes! you've got damn windows.ini file!!
After analizing data, put values to some internal format like mydata.x=58758
and free allocated buffer.
Bye, Levas
- --
<tsb>Amiga? Amiga... Amiga!
- -- e-mail:savel@kaunas.omnitel.net - http://www1.omnitel.net/savel --
Don't judge a book by its mini-series.
------- CUT --- CUT --- CUT --- CUT --- CUT --- CUT --- CUT -------