@database AmigaEMessages

@node main "Messages LIST"

  @{fg shine} Amiga E Mailing List November 1998 Messages @{fg text}

    @{" Read Me First!                          " LINK readme}

    @{" How to subscribe to AmigaE Mailing List " LINK subscribe}

    @{" Author                                  " LINK author}  

  

==================================================================

  @{fg shine}MUI OM_GET Method@{fg text}
    @{" MUI OM_GET Method " LINK ID58_0}

  @{fg shine}INet225@{fg text}
    @{" INet225 " LINK ID57_0}

  @{fg shine}Program output@{fg text}
    @{" Program output " LINK ID56_0}
    @{" Program output " LINK ID56_1}

  @{fg shine}Bitmap palette remapping@{fg text}
    @{" Bitmap palette remapping " LINK ID55_0}

  @{fg shine}Old ideas - Java@{fg text}
    @{" Old ideas - Java " LINK ID54_0}
    @{" Old ideas - Java " LINK ID54_1}
    @{" Old ideas - Java " LINK ID54_2}
    @{" Old ideas - Java " LINK ID54_3}

  @{fg shine}Old ideas - Syntax@{fg text}
    @{" Old ideas - Syntax " LINK ID53_0}

  @{fg shine}Old ideas - assembly ?@{fg text}
    @{" Old ideas - assembly ? " LINK ID52_0}
    @{" Old ideas - assembly ? " LINK ID52_1}
    @{" Old ideas - assembly ? " LINK ID52_2}
    @{" Old ideas - assembly ? " LINK ID52_3}
    @{" Old ideas - assembly ? " LINK ID52_4}
    @{" Old ideas - assembly ? " LINK ID52_5}
    @{" Old ideas - assembly ? " LINK ID52_6}
    @{" Old ideas - assembly ? " LINK ID52_7}
    @{" Old ideas - assembly ? " LINK ID52_8}
    @{" Old ideas - assembly ? " LINK ID52_9}
    @{" Old ideas - assembly ? " LINK ID52_10}

  @{fg shine}THANK YOU ALL !!!@{fg text}
    @{" THANK YOU ALL !!! " LINK ID51_0}
    @{" THANK YOU ALL !!! " LINK ID51_1}

  @{fg shine}Old ideas - Frontend@{fg text}
    @{" Old ideas - Frontend " LINK ID50_0}

  @{fg shine}MuiCursor@{fg text}
    @{" MuiCursor " LINK ID49_0}

  @{fg shine}NewIcon copy!@{fg text}
    @{" NewIcon copy! " LINK ID48_0}

  @{fg shine}Problem with IF/ELSEIF@{fg text}
    @{" Problem with IF/ELSEIF " LINK ID47_0}
    @{" Problem with IF/ELSEIF " LINK ID47_1}
    @{" Problem with IF/ELSEIF " LINK ID47_2}
    @{" Problem with IF/ELSEIF " LINK ID47_3}
    @{" Problem with IF/ELSEIF " LINK ID47_4}
    @{" Problem with IF/ELSEIF " LINK ID47_5}

  @{fg shine}Kicking myself in public (was: EasyGUI/E problem, or something@{fg text}
    @{" Kicking myself in public (was: EasyGUI/E problem, or something " LINK ID46_0}
    @{" Kicking myself in public (was: EasyGUI/E problem, or something " LINK ID46_1}
    @{" Kicking myself in public (was: EasyGUI/E problem, or something " LINK ID46_2}
    @{" Kicking myself in public (was: EasyGUI/E problem, or something " LINK ID46_3}

  @{fg shine}E Objects@{fg text}
    @{" E Objects " LINK ID45_0}
    @{" E Objects " LINK ID45_1}
    @{" E Objects " LINK ID45_2}
    @{" E Objects " LINK ID45_3}
    @{" E Objects " LINK ID45_4}

  @{fg shine}Bitmap blitting and backfill hooks@{fg text}
    @{" Bitmap blitting and backfill hooks " LINK ID44_0}
    @{" Bitmap blitting and backfill hooks " LINK ID44_1}
    @{" Bitmap blitting and backfill hooks " LINK ID44_2}

  @{fg shine}gui problem@{fg text}
    @{" gui problem " LINK ID43_0}

  @{fg shine}AmigaCentral.com - Is Now Open - http://www.amigacentral.com@{fg text}
    @{" AmigaCentral.com - Is Now Open - http://www.amigacentral.com " LINK ID42_0}

  @{fg shine}Subjects@{fg text}
    @{" Subjects " LINK ID41_0}
    @{" Subjects " LINK ID41_1}
    @{" Subjects " LINK ID41_2}
    @{" Subjects " LINK ID41_3}
    @{" Subjects " LINK ID41_4}
    @{" Subjects " LINK ID41_5}
    @{" Subjects " LINK ID41_6}
    @{" Subjects " LINK ID41_7}
    @{" Subjects " LINK ID41_8}
    @{" Subjects " LINK ID41_9}

  @{fg shine}Old ideas (was: Lacking features)@{fg text}
    @{" Old ideas (was: Lacking features) " LINK ID40_0}
    @{" Old ideas (was: Lacking features) " LINK ID40_1}
    @{" Old ideas (was: Lacking features) " LINK ID40_2}
    @{" Old ideas (was: Lacking features) " LINK ID40_3}
    @{" Old ideas (was: Lacking features) " LINK ID40_4}
    @{" Old ideas (was: Lacking features) " LINK ID40_5}
    @{" Old ideas (was: Lacking features) " LINK ID40_6}
    @{" Old ideas (was: Lacking features) " LINK ID40_7}
    @{" Old ideas (was: Lacking features) " LINK ID40_8}
    @{" Old ideas (was: Lacking features) " LINK ID40_9}
    @{" Old ideas (was: Lacking features) " LINK ID40_10}
    @{" Old ideas (was: Lacking features) " LINK ID40_11}
    @{" Old ideas (was: Lacking features) " LINK ID40_12}
    @{" Old ideas (was: Lacking features) " LINK ID40_13}
    @{" Old ideas (was: Lacking features) " LINK ID40_14}
    @{" Old ideas (was: Lacking features) " LINK ID40_15}
    @{" Old ideas (was: Lacking features) " LINK ID40_16}
    @{" Old ideas (was: Lacking features) " LINK ID40_17}
    @{" Old ideas (was: Lacking features) " LINK ID40_18}
    @{" Old ideas (was: Lacking features) " LINK ID40_19}

  @{fg shine}MUI gadget/group cycling@{fg text}
    @{" MUI gadget/group cycling " LINK ID39_0}
    @{" MUI gadget/group cycling " LINK ID39_1}
    @{" MUI gadget/group cycling " LINK ID39_2}

  @{fg shine}MUI Listviews And MUI Arexx@{fg text}
    @{" MUI Listviews And MUI Arexx " LINK ID38_0}

  @{fg shine}Debug messages@{fg text}
    @{" Debug messages " LINK ID37_0}
    @{" Debug messages " LINK ID37_1}
    @{" Debug messages " LINK ID37_2}

  @{fg shine}MUI, Arexx And Listviews@{fg text}
    @{" MUI, Arexx And Listviews " LINK ID36_0}
    @{" MUI, Arexx And Listviews " LINK ID36_1}

  @{fg shine}Rexx Scripts@{fg text}
    @{" Rexx Scripts " LINK ID35_0}
    @{" Rexx Scripts " LINK ID35_1}
    @{" Rexx Scripts " LINK ID35_2}

  @{fg shine}Little ARexx port shutdown query@{fg text}
    @{" Little ARexx port shutdown query " LINK ID34_0}
    @{" Little ARexx port shutdown query " LINK ID34_1}
    @{" Little ARexx port shutdown query " LINK ID34_2}
    @{" Little ARexx port shutdown query " LINK ID34_3}
    @{" Little ARexx port shutdown query " LINK ID34_4}
    @{" Little ARexx port shutdown query " LINK ID34_5}
    @{" Little ARexx port shutdown query " LINK ID34_6}
    @{" Little ARexx port shutdown query " LINK ID34_7}
    @{" Little ARexx port shutdown query " LINK ID34_8}
    @{" Little ARexx port shutdown query " LINK ID34_9}
    @{" Little ARexx port shutdown query " LINK ID34_10}
    @{" Little ARexx port shutdown query " LINK ID34_11}
    @{" Little ARexx port shutdown query " LINK ID34_12}
    @{" Little ARexx port shutdown query " LINK ID34_13}
    @{" Little ARexx port shutdown query " LINK ID34_14}

  @{fg shine}Closing Libraries built with E@{fg text}
    @{" Closing Libraries built with E " LINK ID33_0}
    @{" Closing Libraries built with E " LINK ID33_1}
    @{" Closing Libraries built with E " LINK ID33_2}
    @{" Closing Libraries built with E " LINK ID33_3}
    @{" Closing Libraries built with E " LINK ID33_4}
    @{" Closing Libraries built with E " LINK ID33_5}
    @{" Closing Libraries built with E " LINK ID33_6}
    @{" Closing Libraries built with E " LINK ID33_7}
    @{" Closing Libraries built with E " LINK ID33_8}
    @{" Closing Libraries built with E " LINK ID33_9}
    @{" Closing Libraries built with E " LINK ID33_10}
    @{" Closing Libraries built with E " LINK ID33_11}
    @{" Closing Libraries built with E " LINK ID33_12}

  @{fg shine}Loudmouth v1.0@{fg text}
    @{" Loudmouth v1.0 " LINK ID32_0}
    @{" Loudmouth v1.0 " LINK ID32_1}
    @{" Loudmouth v1.0 " LINK ID32_2}
    @{" Loudmouth v1.0 " LINK ID32_3}
    @{" Loudmouth v1.0 " LINK ID32_4}
    @{" Loudmouth v1.0 " LINK ID32_5}
    @{" Loudmouth v1.0 " LINK ID32_6}
    @{" Loudmouth v1.0 " LINK ID32_7}
    @{" Loudmouth v1.0 " LINK ID32_8}
    @{" Loudmouth v1.0 " LINK ID32_9}
    @{" Loudmouth v1.0 " LINK ID32_10}
    @{" Loudmouth v1.0 " LINK ID32_11}

  @{fg shine}UU Encoding@{fg text}
    @{" UU Encoding " LINK ID31_0}
    @{" UU Encoding " LINK ID31_1}

  @{fg shine}E libraries and arexx@{fg text}
    @{" E libraries and arexx " LINK ID30_0}
    @{" E libraries and arexx " LINK ID30_1}
    @{" E libraries and arexx " LINK ID30_2}
    @{" E libraries and arexx " LINK ID30_3}
    @{" E libraries and arexx " LINK ID30_4}
    @{" E libraries and arexx " LINK ID30_5}
    @{" E libraries and arexx " LINK ID30_6}
    @{" E libraries and arexx " LINK ID30_7}
    @{" E libraries and arexx " LINK ID30_8}
    @{" E libraries and arexx " LINK ID30_9}
    @{" E libraries and arexx " LINK ID30_10}

  @{fg shine}MUI Listtree programming ??@{fg text}
    @{" MUI Listtree programming ?? " LINK ID29_0}

  @{fg shine}ECLASS_ACTIVEWINDOW@{fg text}
    @{" ECLASS_ACTIVEWINDOW " LINK ID28_0}
    @{" ECLASS_ACTIVEWINDOW " LINK ID28_1}
    @{" ECLASS_ACTIVEWINDOW " LINK ID28_2}
    @{" ECLASS_ACTIVEWINDOW " LINK ID28_3}
    @{" ECLASS_ACTIVEWINDOW " LINK ID28_4}

  @{fg shine}socket.library@{fg text}
    @{" socket.library " LINK ID27_0}

  @{fg shine}Audio Module@{fg text}
    @{" Audio Module " LINK ID26_0}
    @{" Audio Module " LINK ID26_1}

  @{fg shine}EasyGUI: dynamic definition?@{fg text}
    @{" EasyGUI: dynamic definition? " LINK ID25_0}
    @{" EasyGUI: dynamic definition? " LINK ID25_1}
    @{" EasyGUI: dynamic definition? " LINK ID25_2}
    @{" EasyGUI: dynamic definition? " LINK ID25_3}

  @{fg shine}IECLASS_ACTIVEWINDOW@{fg text}
    @{" IECLASS_ACTIVEWINDOW " LINK ID24_0}
    @{" IECLASS_ACTIVEWINDOW " LINK ID24_1}
    @{" IECLASS_ACTIVEWINDOW " LINK ID24_2}
    @{" IECLASS_ACTIVEWINDOW " LINK ID24_3}

  @{fg shine}(no subject)@{fg text}
    @{" (no subject) " LINK ID23_0}

  @{fg shine}HELP HELP HELP@{fg text}
    @{" HELP HELP HELP " LINK ID22_0}
    @{" HELP HELP HELP " LINK ID22_1}
    @{" HELP HELP HELP " LINK ID22_2}
    @{" HELP HELP HELP " LINK ID22_3}
    @{" HELP HELP HELP " LINK ID22_4}
    @{" HELP HELP HELP " LINK ID22_5}
    @{" HELP HELP HELP " LINK ID22_6}
    @{" HELP HELP HELP " LINK ID22_7}
    @{" HELP HELP HELP " LINK ID22_8}
    @{" HELP HELP HELP " LINK ID22_9}
    @{" HELP HELP HELP " LINK ID22_10}
    @{" HELP HELP HELP " LINK ID22_11}
    @{" HELP HELP HELP " LINK ID22_12}

  @{fg shine}UU encoding@{fg text}
    @{" UU encoding " LINK ID21_0}

  @{fg shine}Debugging help for ARexxComm needed!@{fg text}
    @{" Debugging help for ARexxComm needed! " LINK ID20_0}

  @{fg shine}3D scrolling gadget knob@{fg text}
    @{" 3D scrolling gadget knob " LINK ID19_0}

  @{fg shine}MUI-BodyChunk Objects@{fg text}
    @{" MUI-BodyChunk Objects " LINK ID18_0}
    @{" MUI-BodyChunk Objects " LINK ID18_1}

  @{fg shine}Problems with c--e converting@{fg text}
    @{" Problems with c--e converting " LINK ID17_0}
    @{" Problems with c--e converting " LINK ID17_1}

  @{fg shine}Lacking features (was Problems with c->e converting)@{fg text}
    @{" Lacking features (was Problems with c->e converting) " LINK ID16_0}
    @{" Lacking features (was Problems with c->e converting) " LINK ID16_1}
    @{" Lacking features (was Problems with c->e converting) " LINK ID16_2}
    @{" Lacking features (was Problems with c->e converting) " LINK ID16_3}

  @{fg shine}GACT_IMMEDIATE buttons in EasyGUI?@{fg text}
    @{" GACT_IMMEDIATE buttons in EasyGUI? " LINK ID15_0}

  @{fg shine}Problems with c->e converting@{fg text}
    @{" Problems with c->e converting " LINK ID14_0}
    @{" Problems with c->e converting " LINK ID14_1}
    @{" Problems with c->e converting " LINK ID14_2}
    @{" Problems with c->e converting " LINK ID14_3}
    @{" Problems with c->e converting " LINK ID14_4}
    @{" Problems with c->e converting " LINK ID14_5}
    @{" Problems with c->e converting " LINK ID14_6}
    @{" Problems with c->e converting " LINK ID14_7}

  @{fg shine}UUEncode/Decode Src@{fg text}
    @{" UUEncode/Decode Src " LINK ID13_0}

  @{fg shine}-none-@{fg text}
    @{" -none- " LINK ID12_0}

  @{fg shine}<none>@{fg text}
    @{" <none> " LINK ID11_0}
    @{" <none> " LINK ID11_1}
    @{" <none> " LINK ID11_2}
    @{" <none> " LINK ID11_3}

  @{fg shine}OBJECTS and getting the size of data@{fg text}
    @{" OBJECTS and getting the size of data " LINK ID10_0}

  @{fg shine}CSV to guide problem@{fg text}
    @{" CSV to guide problem " LINK ID9_0}
    @{" CSV to guide problem " LINK ID9_1}
    @{" CSV to guide problem " LINK ID9_2}
    @{" CSV to guide problem " LINK ID9_3}

  @{fg shine}Another small survey@{fg text}
    @{" Another small survey " LINK ID8_0}
    @{" Another small survey " LINK ID8_1}
    @{" Another small survey " LINK ID8_2}
    @{" Another small survey " LINK ID8_3}
    @{" Another small survey " LINK ID8_4}
    @{" Another small survey " LINK ID8_5}
    @{" Another small survey " LINK ID8_6}
    @{" Another small survey " LINK ID8_7}
    @{" Another small survey " LINK ID8_8}
    @{" Another small survey " LINK ID8_9}

  @{fg shine}MUI problem@{fg text}
    @{" MUI problem " LINK ID7_0}
    @{" MUI problem " LINK ID7_1}

  @{fg shine}subscribe?@{fg text}
    @{" subscribe? " LINK ID6_0}

  @{fg shine}Audio questions@{fg text}
    @{" Audio questions " LINK ID5_0}
    @{" Audio questions " LINK ID5_1}
    @{" Audio questions " LINK ID5_2}
    @{" Audio questions " LINK ID5_3}
    @{" Audio questions " LINK ID5_4}

  @{fg shine}EasyGUI/E problem, or something larger?@{fg text}
    @{" EasyGUI/E problem, or something larger? " LINK ID4_0}
    @{" EasyGUI/E problem, or something larger? " LINK ID4_1}

  @{fg shine}RemoveGList problems@{fg text}
    @{" RemoveGList problems " LINK ID3_0}

  @{fg shine}AMarquee@{fg text}
    @{" AMarquee " LINK ID2_0}
    @{" AMarquee " LINK ID2_1}
    @{" AMarquee " LINK ID2_2}
    @{" AMarquee " LINK ID2_3}
    @{" AMarquee " LINK ID2_4}
    @{" AMarquee " LINK ID2_5}
    @{" AMarquee " LINK ID2_6}
    @{" AMarquee " LINK ID2_7}
    @{" AMarquee " LINK ID2_8}
    @{" AMarquee " LINK ID2_9}
    @{" AMarquee " LINK ID2_10}
    @{" AMarquee " LINK ID2_11}
    @{" AMarquee " LINK ID2_12}
    @{" AMarquee " LINK ID2_13}
    @{" AMarquee " LINK ID2_14}
    @{" AMarquee " LINK ID2_15}
    @{" AMarquee " LINK ID2_16}

  @{fg shine}UNSUBSCRIBE@{fg text}
    @{" UNSUBSCRIBE " LINK ID1_0}
    @{" UNSUBSCRIBE " LINK ID1_1}

  @{fg shine}easygui.library - on the way, help needed :)@{fg text}
    @{" easygui.library - on the way, help needed :) " LINK ID0_0}
    @{" easygui.library - on the way, help needed :) " LINK ID0_1}
@endnode

@node readme "Read Me First!"

  @{fg shine} Introduction @{fg text}

  Here you'll find all the messages appeared on Amiga E Mailing list
  in November 1998.

  This is the first version of the message log done in Amiga Guide.

  I have just written a little program to do this, as soon as I can
  create some comments, I'll release it in the public domain.

  The best way of reading this guide is to choose an argument 
  (ie. a subject of a message) and then browse it using the "Previous" and "Next"
  gadget in the MultiView/AmigaGuide viewer.
@endnode

@node author "Author"

  @{fg shine} Author @{fg text}

  Err.. authors of this text are Amiga E subscribers!

  Anyway, I have packed it all.

  My name is Fabio Rotondo. If you want to contact me, please, write to:

  

  Fabio Rotondo     - email: fsoft@intercom.it
                             Fabio.Rotondo@deagostini.it

  Via Lunga, 50
  27020 Valle Lomellina (PV)
  ITALY
  
@endnode

@node subscribe "How to subscribe to AmigaE Mailing List"

  @{fg shine}How to subscribe to AmigaE Mailing List @{fg text}

  To subscribe to the @{fg shine}official@{fg text} AmigaE Mailing list,
  please, write to:

    listserv@intercom.it

  with:

    SUBSCRIBE amigae-list First LastName

  in the @{fg shine}BODY@{fg text} of the message.

  Eg. SUBSCRIBE amigae-list John Smith



  To unsubscribe, write to:

    listserv@intercom.it

  with:

    SIG amigae-list

  in the @{fg shine}BODY@{fg text} of the message.
@endnode


@node ID0_0 "easygui.library - on the way, help needed :) (ID0_0)"

From: M.Tjoelker@nl.cis.philips.com (Menno Tjoelker)
Subject: Re[2]: easygui.library - on the way, help needed :)
Date: Sat, 31 Oct 98 21:26:00 -0100

Jason Hulance wrote about RE: easygui.library - on the way, help needed :):=

>   -> Remember to handle the exception if NEW fails
>   h:=3DNEW [VTAG_VIEWPORTEXTRA_GET, NIL, NIL]
>   IF (IF cm:=3Ds.viewport.colormap THEN VideoControl(cm,h) BUT
>                vpe:=3Dh[1] ELSE vpe:=3DNIL)
>     ...
>   ELSE
>     ...
>   ENDIF
>   -> Remember to deallocate it once you're done
>   FastDisposeList(h)

Another possibility:
  DEF h[3]:ARRAY OF LONG
    ...
  CopyMem([VTAG_VIEWPORTEXTRA_GET, NIL, NIL],h,12)
  IF ...
    ...

The memory is freed automatically when the function is exited. It is
allocated on the stack.

> > Also, what does this do? (from findxy()):
> >
> >     IF x>=3D(gad.leftedge+offx) THEN
> >     IF y>=3D(gad.topedge+offy) THEN
> >     IF gad.leftedge+gad.width>x THEN
> >     IF gad.topedge+gad.height>y THEN RETURN gad.userdata
> >
> > If this is simple bounds-checking (i.e. a point within a box), shouldn'=
t
> > a simpler way of expressing this be used?
>
> E doesn't have short-cut "AND" and "OR" so I wrote it like this to
> mimic that.  It's basically lots of ANDs that stop as soon as one of
> them is FALSE, so you don't do any unnecessary processing.  Neat, eh?
> Not sure if it actually produces better or worse code than simply
> using AND, though.  ;-)  [Ask Wouter?]

The version with nested IFs produces four conditional branches. If the most=

frequent case is "RETURN gad.userdata" then these branches will slow down
CPUs with pipelining.

Jilles Tjoelker

- --
- ---
Jilles Tjoelker     |
Craterlaan 6        |   Tel. : +31.40.2427420
5632 AG Eindhoven   |   Fax  : +31.40.2427420 (on request)
The Netherlands     |

*** Author of Iris (mailer), Activity (activity meter),    ***
*** Select_Host (NapsaTerm frontend), Solitaire (WB game), ***
*** Metronome (tool for musicians), etc.                   ***
@endnode

@node ID0_1 "easygui.library - on the way, help needed :) (ID0_1)"
From: agraham@hal9000.net.au (Ali Graham)
Date: Mon, 02 Nov 1998 08:30:51 +0930
Subject: Re: easygui.library - on the way, help needed :)

On 30-Oct-98, someone (I think it was Jason Hulance) might have written:

JH>  Did you catch Tomasz's EasyGUI update recently?  His Email address is
JH>  <tpatora@zly.kis.p.lodz.pl>.  He's done a backfill option for EasyGUI
JH>  windows.  It works pretty well, although it might be better done using
JH>  the backfill hook for the window (and screen) layers.

Can anyone point me in the direction of some example source that uses
WA_BACKFILL? I'm sort of halfway there, but I can't really work out
exactly *why* the hook is being called with the parameters it is, and
how to clear the gadget imagery on a window redraw without effectively
blanking out backfilled areas as well...

- --

  Ali Graham     [  mailto:agraham@hal9000.net.au  ]
                 [ http://hal9000.net.au/~agraham/ ]
       .                                        .
        Your mouse has moved. Windows NT must be
        restarted for the change to take effect.

                      Reboot now?

       .                [ OK ]                  .

@endnode



@node ID1_0 "UNSUBSCRIBE (ID1_0)"
Date: Sun, 01 Nov 1998 18:27:57 +0000
From: gary@empire.u-net.com (Gary Colville)
Subject: UNSUBSCRIBE

@endnode

@node ID1_1 "UNSUBSCRIBE (ID1_1)"
Date: Mon, 23 Nov 1998 12:53:14 +0000 (WET)
From: l21893@fc.ul.pt (Pedro Duarte)
Subject: UNSUBSCRIBE

        Only temporary.

                                                             ------------
                                                             Pedro Duarte

@endnode



@node ID2_0 "AMarquee (ID2_0)"
From: dissident@mail.telepac.pt (Roberto)
Date: Mon, 02 Nov 1998 01:22:33 +0100
Subject: AMarquee

Hi! I'm translating the AMarquee protos but as it comes to these defines i'm
really stuck.. Can you help me? And please explain me what the << do. Some
logic operation (bit shift?)?

#define QGOF_SYNC   (1L<<0)
#define QGOF_NOTIFY (1L<<1)

#define QPRIV_KILLCLIENTS        (1L<<0)
#define QPRIV_ADMIN              (1L<<1)
#define QPRIV_GETSYSMESSAGES     (1L<<2)
#define QPRIV_SENDSYSMESSAGES    (1L<<3)
#define QPRIV_ALL                ($0F)

- --
rOBERTo ->dissident@mail.telepac.pt<- ICQ:14501808

@endnode

@node ID2_1 "AMarquee (ID2_1)"
Date: Mon, 2 Nov 1998 12:12:54 +0100 (MET)
From: mfontana@komodo.ing.unico.it (mauro fontana)
Subject: Re: AMarquee

On Mon, 2 Nov 1998, Roberto wrote:

> Hi! I'm translating the AMarquee protos but as it comes to these defines
i'm
> really stuck.. Can you help me? And please explain me what the << do. Some
> logic operation (bit shift?)?

I'm not a C expert but this should be right (correct me if I'm wrong,
though)
Yes it is a logical left shift. That means that the value 1, delfined as a
32 bit number (the L) is shifted toward the left of a number of bits.

In E you can use the Shl() function that is called wiht he same
parameters, that is the number to be shifted (always as a 32 bit value)
and the number of bits that it must be shifted.

> #define QGOF_SYNC   (1L<<0)
> #define QGOF_NOTIFY (1L<<1)
>
> #define QPRIV_KILLCLIENTS        (1L<<0)
> #define QPRIV_ADMIN              (1L<<1)
> #define QPRIV_GETSYSMESSAGES     (1L<<2)
> #define QPRIV_SENDSYSMESSAGES    (1L<<3)
> #define QPRIV_ALL                ($0F)

So the above are:

#define QGOF_SYNC Shl(1, 0) -> This is equal to 1
#define QGOF_NOTIFY Shl(1,1) -> This is 2

And so on.

M&F

@endnode

@node ID2_2 "AMarquee (ID2_2)"
From: frosetti@hotmail.com ("Dennis Andersson")
Subject: Re: AMarquee
Date: Mon, 02 Nov 1998 03:15:08 PST

>
>Hi! I'm translating the AMarquee protos but as it comes to these
defines i'm
>really stuck.. Can you help me? And please explain me what the << do.
Some
>logic operation (bit shift?)?
>

<< is a left shift. In E you have to use Shl(x,n) to shift x n number
of bits or the asm SHL. BTW does anyone know anything about the
ROTL, ROTR instructions. I've seen them in an old assembler guide
but none of my assemblers or E recognize it.

>#define QGOF_SYNC   (1L<<0)
>#define QGOF_NOTIFY (1L<<1)
>
>#define QPRIV_KILLCLIENTS        (1L<<0)
>#define QPRIV_ADMIN              (1L<<1)
>#define QPRIV_GETSYSMESSAGES     (1L<<2)
>#define QPRIV_SENDSYSMESSAGES    (1L<<3)
>#define QPRIV_ALL                ($0F)
>

CONST QGOF_SYNC = 1
CONST QGOF_NOTIFY = 2

CONST QPRIV_KILLCLIENTS     = 1
CONST QPRIV_ADMIN           = 2
CONST QPRIV_GETSYSMESSAGES  = 4
CONST QPRIV_SENDSYSMESSAGES = 8
CONST QPRIV_ALL             = 15

Happy coding!

Dennis

______________________________________________________
Get Your Private, Free Email at http://www.hotmail.com
@endnode

@node ID2_3 "AMarquee (ID2_3)"
Date: Mon, 2 Nov 1998 11:32:35 +0000 (UTC)
From: tim@c32.keble.ox.ac.uk (Tim Bagot)
Subject: Re: AMarquee

On Mon, 2 Nov 1998, mauro fontana wrote:

> On Mon, 2 Nov 1998, Roberto wrote:
>
> > Hi! I'm translating the AMarquee protos but as it comes to these defines
i'm
> > really stuck.. Can you help me? And please explain me what the << do.
Some
> > logic operation (bit shift?)?
>
> I'm not a C expert but this should be right (correct me if I'm wrong,
> though)
> Yes it is a logical left shift. That means that the value 1, delfined as a
> 32 bit number (the L) is shifted toward the left of a number of bits.
>
> In E you can use the Shl() function that is called wiht he same
> parameters, that is the number to be shifted (always as a 32 bit value)
> and the number of bits that it must be shifted.
>
> > #define QGOF_SYNC   (1L<<0)
> > #define QGOF_NOTIFY (1L<<1)
> >
> > #define QPRIV_KILLCLIENTS        (1L<<0)
> > #define QPRIV_ADMIN              (1L<<1)
> > #define QPRIV_GETSYSMESSAGES     (1L<<2)
> > #define QPRIV_SENDSYSMESSAGES    (1L<<3)
> > #define QPRIV_ALL                ($0F)
>
> So the above are:
>
> #define QGOF_SYNC Shl(1, 0) -> This is equal to 1
> #define QGOF_NOTIFY Shl(1,1) -> This is 2
>
> And so on.

I think  Shl will be called each time one of these macros is used. You
would probably be better of with

SET QGOF_SYNC, QGOF_NOTIFY

SET QPRIV_KILLCLIENTS,
    QPRIV_ADMIN,
    QPRIV_GETSYSMESSAGES,
    QPRIV_SENDSYSMESSAGES

CONST QPRIV_ALL = QPRIV_KILLCLIENTS    OR
                  QPRIV_ADMIN          OR
                  QPRIV_GETSYSMESSAGES OR
                  QPRIV_SENDSYSMESSAGES

which (IMHO) is also more readable and informative.

Tim Bagot

@endnode

@node ID2_4 "AMarquee (ID2_4)"
Date: Mon, 2 Nov 1998 12:41:22 +0100 (MET)
From: mfontana@komodo.ing.unico.it (mauro fontana)
Subject: Re: AMarquee

On Mon, 2 Nov 1998, Dennis Andersson wrote:

> << is a left shift. In E you have to use Shl(x,n) to shift x n number
> of bits or the asm SHL. BTW does anyone know anything about the
> ROTL, ROTR instructions. I've seen them in an old assembler guide
> but none of my assemblers or E recognize it.

I think the right spelling is LSR and LSR that is Logical Shift Right and
Logical Shift Left. There are also ASL and ASR that is Arithmetic
Shift Left and Arithmetic Shift Right that store the exiting bit to the C
bit of the conditional code register (that of the carry).

RORL and RORL should be ROR and ROR (or ROR.L and ROR.L) and if I remember
right they rotate completely the bits towards the left or the right
inserting the leaving bit at the opposite end of the elmnt (byte, word or
long) that is being modified.

I'm not sure if this is all right, but there should be an assembler guide
on Aminet somewhere that explains all the functions of all the available
Assembly instructions on the Amiga..

M&F

@endnode

@node ID2_5 "AMarquee (ID2_5)"
Date: Mon, 2 Nov 1998 11:48:24 +0000 (UTC)
From: tim@c32.keble.ox.ac.uk (Tim Bagot)
Subject: Re: AMarquee

On Mon, 2 Nov 1998, mauro fontana wrote:

> I'm not sure if this is all right, but there should be an assembler guide
> on Aminet somewhere that explains all the functions of all the available
> Assembly instructions on the Amiga..

The Motorola website (*very* slow) has a PDF on the 68000. I'm afraid I
can't remember the URL, and you also need to be able to do something with
the PDF. However, it does give full details of all the 68000 instructions
(there may be other ones for 680x0), including timings, etc.

Tim Bagot

@endnode

@node ID2_6 "AMarquee (ID2_6)"
From: norbert.roth@gmx.net (Norbert Roth)
Date: Mon, 02 Nov 1998 13:42:09 +0100
Subject: Re: AMarquee

Hello Tim,

on 02-Nov-98 you wrote :

> On Mon, 2 Nov 1998, mauro fontana wrote:
>
>>  I'm not sure if this is all right, but there should be an
>>  assembler guide on Aminet somewhere that explains all the
>>  functions of all the available Assembly instructions on the
>>  Amiga..
>
> The Motorola website (*very* slow) has a PDF on the 68000. I'm
> afraid I can't remember the URL, and you also need to be able to
> do something with the PDF. However, it does give full details of
> all the 68000 instructions (there may be other ones for 680x0),
> including timings, etc.

Try : http://www.mot.com/SPS/HPESD/prod/0X0/680X0.html

It covers the whole processor family.

Regards

     NR

- --
<sb>
Remark of the day :

A gleekzorp without a tornpee
is like a quop without a fertsneet.
(sort of)
<sb>
Amiga 2000 B   - Blizzard 2040 40 MHz - Picasso II Gfx/Picasso96
2 MB ChipMem   - 4 MB 16 bit FastMem  - 96 MB 32 bit FastMem
2.7 GB SCSI HD - 12 x SCSI CD-ROM     - 19" Multiscan Monitor

@endnode

@node ID2_7 "AMarquee (ID2_7)"
From: frosetti@hotmail.com ("Dennis Andersson")
Subject: Re: AMarquee
Date: Mon, 02 Nov 1998 05:49:44 PST

>
>on 02-Nov-98 you wrote :
>
>> On Mon, 2 Nov 1998, mauro fontana wrote:
>>
>>>  I'm not sure if this is all right, but there should be an
>>>  assembler guide on Aminet somewhere that explains all the
>>>  functions of all the available Assembly instructions on the
>>>  Amiga..
>>
>> The Motorola website (*very* slow) has a PDF on the 68000. I'm
>> afraid I can't remember the URL, and you also need to be able to
>> do something with the PDF. However, it does give full details of
>> all the 68000 instructions (there may be other ones for 680x0),
>> including timings, etc.
>
>Try : http://www.mot.com/SPS/HPESD/prod/0X0/680X0.html
>
>It covers the whole processor family.
>

Thanks!

Dennis

______________________________________________________
Get Your Private, Free Email at http://www.hotmail.com
@endnode

@node ID2_8 "AMarquee (ID2_8)"
Date: Mon, 2 Nov 1998 15:59:02 +0100 (MET)
From: mfontana@komodo.ing.unico.it (mauro fontana)
Subject: Re: AMarquee

> >> The Motorola website (*very* slow) has a PDF on the 68000. I'm
> >> afraid I can't remember the URL, and you also need to be able to
> >> do something with the PDF. However, it does give full details of
> >> all the 68000 instructions (there may be other ones for 680x0),
> >> including timings, etc.
> >
> >Try : http://www.mot.com/SPS/HPESD/prod/0X0/680X0.html

As said, I found an AmigaGuide document on Aminet containing the
description of all the 68000 ASM codes and even their binary form
(probably for anyone that wants to do a little of Machine Language 8) ).
I was quite good and well organized. It is probably much easier to handle
that a PDF file and can be used as a online help while programming.  I
can't remeber the exact name of the archive, but have a look on Aminet in
the dev/asm directory. Another useful archive is dev/asm/68000ref.lha that
contains a list of all available ASM commands and lots of useful
information in two pages that may be used for quick reference.

M&F

@endnode

@node ID2_9 "AMarquee (ID2_9)"
Date: Mon, 2 Nov 1998 16:04:22 +0100 (MET)
From: mfontana@komodo.ing.unico.it (mauro fontana)
Subject: Re: AMarquee

> I think  Shl will be called each time one of these macros is used. You
> would probably be better of with
>
> SET QGOF_SYNC, QGOF_NOTIFY
[..]

Yes, that right. But I wanted to translate the C macros exactly. Yet,
those CONSTant should have the option to be defined by other ways other
than directly by a number... but this is another thing to add to the
AmigaE to do list.

M&F

@endnode

@node ID2_10 "AMarquee (ID2_10)"
Date: Mon, 02 Nov 1998 11:28:39 -0500
From: max2@ordigraphe.com ("Maxim Olivier-Adlhoch")
Subject: Re: AMarquee

Roberto wrote:
>
> Hi! I'm translating the AMarquee protos but as it comes to these defines
i'm

What is AMarquee?

- -Maxim
- --
- ----------------------
Maxim Olivier-Adlhoch
- ----------------------
max2@ordigraphe.com
- ----------------------
Are you a programer... Then Visit STEEL(c) Web Site  before you're left
in the cold...
http://www.geocities.com/SiliconValley/Network/7002/steel_welcome.html
@endnode

@node ID2_11 "AMarquee (ID2_11)"
Date: Wed, 04 Nov 1998 14:14:46 +0100
From: gamboni@fastnet.ch (Maxime Gamboni)
Subject: Re: AMarquee

mauro fontana wrote:

> As said, I found an AmigaGuide document on Aminet containing the
> description of all the 68000 ASM codes and even their binary form
> (probably for anyone that wants to do a little of Machine Language 8) ).
> I was quite good and well organized. It is probably much easier to handle
> that a PDF file and can be used as a online help while programming.  I
> can't remeber the exact name of the archive, but have a look on Aminet in
> the dev/asm directory.
>
> M&F

Such an archive would interest me, but I did not find it in dev/asm. :-(

                            Maxime

@endnode

@node ID2_12 "AMarquee (ID2_12)"
From: norbert.roth@gmx.net (Norbert Roth)
Date: Wed, 04 Nov 1998 14:48:26 +0100
Subject: Re: AMarquee

Hello Maxime,

on 04-Nov-98 you wrote :

> mauro fontana wrote:
>
>>  As said, I found an AmigaGuide document on Aminet containing
>>  the description of all the 68000 ASM codes and even their
>>  binary form (probably for anyone that wants to do a little of
>>  Machine Language 8) ). I was quite good and well organized. It
>>  is probably much easier to handle that a PDF file and can be
>>  used as a online help while programming. I can't remeber the
>>  exact name of the archive, but have a look on Aminet in the
>>  dev/asm directory.
>> >
>>  M&F
>
> Such an archive would interest me, but I did not find it in
> dev/asm. :-(

Have you tried : dev/asm/MC680x0.guide ?

Regards

     NR

- --
<sb>
Remark of the day :

Genius is the talent of the man who is dead.
<sb>
Amiga 2000 B   - Blizzard 2040 40 MHz - Picasso II Gfx/Picasso96
2 MB ChipMem   - 4 MB 16 bit FastMem  - 96 MB 32 bit FastMem
2.7 GB SCSI HD - 12 x SCSI CD-ROM     - 19" Multiscan Monitor

@endnode

@node ID2_13 "AMarquee (ID2_13)"
Date: Thu, 05 Nov 1998 17:01:03 +0100
From: gamboni@fastnet.ch (Maxime Gamboni)
Subject: Re: AMarquee

Norbert Roth wrote:

> > Such an archive would interest me, but I did not find it in
> > dev/asm. :-(
>
> Have you tried : dev/asm/MC680x0.guide ?

Thanks, I will have a look at it. :-)

                            Maxime

@endnode

@node ID2_14 "AMarquee (ID2_14)"
Date: Thu, 05 Nov 1998 13:18:38 -0500
From: max2@ordigraphe.com ("Maxim Olivier-Adlhoch")
Subject: Re: AMarquee

Maxime Gamboni wrote:
>
> Norbert Roth wrote:
>
> > > Such an archive would interest me, but I did not find it in
> > > dev/asm. :-(
> >
> > Have you tried : dev/asm/MC680x0.guide ?
>
> Thanks, I will have a look at it. :-)
>
>                             Maxime

No One STILL told me what AMarquee is...

- -MAxim
- --
- ----------------------
Maxim Olivier-Adlhoch
- ----------------------
max2@ordigraphe.com
- ----------------------
Are you a programer... Then Visit STEEL(c) Web Site  before you're left
in the cold...
http://www.geocities.com/SiliconValley/Network/7002/steel_welcome.html
@endnode

@node ID2_15 "AMarquee (ID2_15)"
From: dissident@mail.telepac.pt (Roberto)
Date: Thu, 05 Nov 1998 22:22:06 +0100
Subject: Re: AMarquee

Hi Tim! On 02-Nov-98, you wrote:

> I think  Shl will be called each time one of these macros is used. You
> would probably be better of with
>
> SET QGOF_SYNC, QGOF_NOTIFY
>
> SET QPRIV_KILLCLIENTS,
>    QPRIV_ADMIN,
>    QPRIV_GETSYSMESSAGES,
>    QPRIV_SENDSYSMESSAGES
>
> CONST QPRIV_ALL = QPRIV_KILLCLIENTS    OR
>                  QPRIV_ADMIN          OR
>                  QPRIV_GETSYSMESSAGES OR
>                  QPRIV_SENDSYSMESSAGES
>
> which (IMHO) is also more readable and informative.

 You're right. Thank you and all the other guys that replied!

- --
rOBERTo ->dissident@mail.telepac.pt<- ICQ:14501808

@endnode

@node ID2_16 "AMarquee (ID2_16)"
From: dissident@mail.telepac.pt (Roberto)
Date: Thu, 05 Nov 1998 22:21:06 +0100
Subject: Re: AMarquee

Hi Maxim! On 02-Nov-98, you wrote:

>>  Hi! I'm translating the AMarquee protos but as it comes to these defines
>>  i'm
>
>
> What is AMarquee?

 From AMarquee's documentation:

"AMarquee is a mechanism by which Amiga programs and ARexx scripts
on multiple Amigas may easily communicate data to each other in
a many-to-many, "broadcast" fashion.  It consists of two parts, an
inetd daemon for the server computer to run, and a shared library
for client computers to run."

 It's on Aminet, check it out!

- --
rOBERTo ->dissident@mail.telepac.pt<- ICQ:14501808

@endnode



@node ID3_0 "RemoveGList problems (ID3_0)"
Date: Mon, 2 Nov 1998 12:43:41 +0100 (MET)
From: mfontana@komodo.ing.unico.it (mauro fontana)
Subject: RemoveGList problems

I am trying to add an iconification option to my program BAH. For
iconification I mean that the window is reduced at the smallest dimensions
(that of the titlebar). I just would like some opinions on which is the
best way to obtain it. At this point I have tried two ways with a
variation on the last:

1) Close completely the old window and open a new one of the desired
size. But this is not efficient at all as I have to remove menus for the
older window and then restore them before reopening it again. And this
mode needs opening/closing two windows for both the actions
(iconify/display).

2) Just resize the size of the window (keeping the old size saved). This
seems to be the better solution but a question remain: it i safe to resize
a window to the dimensions of the titlebar leaving all the other gadgets I
have in the window still linked to it? They are there even though they are
out of the window dimensions. Can this a cause of problems?
I have tried to remove the gadget list from the window with the
RemoveGList and then to restore them with the AddGList functions but I
have quite ome problems. I, of course, have a pointer to the first of the
gadgets in the list that I have created and that is passed to the window
when it opens. Trying to remove the gadgets, however (through a
RemoveGList(window, firstgadget, -1) where -1 means all the gadgets in the
list) results in te removal of the system gadgets as well (the depthgadget
the dragbar and the closegadget). Restoring the gadgetlist reattach even
the system gadgets. I have tried also to remove the right number of
gadgets from the window (substituting the -1 with a number) but when
adding the gadget list again the program crashes.

Hany help appreciated.

Thanks in advance.

M&F

@endnode



@node ID4_0 "EasyGUI/E problem, or something larger? (ID4_0)"
Date: 03 Nov 98 02:56:11 -0500
From: victord@netrover.com ("Victor Ducedre")
Subject: Re: EasyGUI/E problem, or something larger?

Quoting Ali Graham...

>>     I've actually simplified the GUI definition to *one* element, and
>>  The Problem still lives... (sigh)

>ow. :( How about the various options passed to guiinitA()? Is any of
>those causing it? Are you using any PLUGINs that haven't been
>recompiled against other sources that have changed? (this could
>probably throw things off even if they weren't actually used by the
>program, as EC would get its offsets in a twist while compiling...)

    There are no plugins, and changing the options does nothing.
    Just to see, I put the main window and the problem window into their
own guitest program, with no other functions, and both windows take some
some time to fully draw, and slow the pointer considerably while doing
so.
    I've even tried recompiling EasyGUI, and strangely, the (unedited)
source EasyGUI.e compiles 1100 bytes larger than the module included in
the v3.3 archive.

[...]
>Also, have you tried to EDBG the offending parts - including the
>EasyGUI source? Trace through that as well, as part of the debugging,
>and you may find something interesting happening... (and have Enforcer
>& Sushi, and maybe Mungwall, running at the same time...) This part is
>a lot of work, but indispensable if nothing else works...

    This spawns a whole new set of questions/problems.
    1) I recompiled my guitest program and EasyGUI.e with the DEBUG
option and ran it through EDBG.  Now let me interrupt here by mentioning
that I'm not exactly sure what to do with EDBG, I mean, I can follow
along with the program while it's running to see what it's doing, but I
don't know what information to look for, or what it is specifically I'm
looking at, or what to do about it if it doesn't look right.  That said,
the test program works just fine when run from EDBG, without any delays
at all.  If I run it by itself, of course, it still crawls. (?)
    2) In the full program, a second task is run from the first, and has
a number of Forbid()s/Permit()s in place. Will this play havoc with
EDBG?
    3) And generally, given my inability to grasp the concept of EDBG
:-) what is the standard/preferred combination of programs, such as
you've mentioned above, recommended for all-purpose programming use.
When do I run them, and in what order?!?  Can't they just make something
that will digest my programs and spit out something that works?!?!!?

<breath TYPE="deep">
</breath>

    Ok, better now.  Any further suggestions, help, etc. welcomed.

>... or a race condition which pops up only on a faster processor. I'm
>a software guy, in general, and I like to explore absoultely everything
>before I start blaming the hardware :)

    I'm not even sure where to begin on the subject of "race
conditions".

- --
Victor Ducedre          (victord@netrover.com)          Team AMIGA
Now proud keeper of the XPKatana spell (v 1.4 on its way).
"You spelled 'ballon' and 'vodoo' wrong," Tom said morosely.

@endnode

@node ID4_1 "EasyGUI/E problem, or something larger? (ID4_1)"
From: a9660319@wlv.ac.uk
Subject: Re: EasyGUI/E problem, or something larger?
Date: Tue, 3 Nov 1998 11:51:30 -0500 (EST)

>     3) And generally, given my inability to grasp the concept of EDBG
> :-) what is the standard/preferred combination of programs, such as
> you've mentioned above, recommended for all-purpose programming use.
> When do I run them, and in what order?!?  Can't they just make something
> that will digest my programs and spit out something that works?!?!!?

Try enforcer and mungwall. (You are using enforcer right :)

The idea behind EDBG is so that you can see what your vars. contain as
you go along, so you can check to see if vars get loaded with silly
values, or perhaps the program goes around a loop too many times, EDBG
will show you this.

> >... or a race condition which pops up only on a faster processor. I'm
> >a software guy, in general, and I like to explore absoultely everything
> >before I start blaming the hardware :)

Um... What *are* "race conditions".

Thanks.
Andrew Hutchins.

@endnode



@node ID5_0 "Audio questions (ID5_0)"
Date: Tue, 03 Nov 1998 08:23:23 +0100
From: Rainer.M.Mueller@uni-konstanz.de (Rainer =?iso-8859-1?Q?M=FCller?=)
Subject: Re: Audio questions

- --=====================_910074203==_
Content-Type: text/plain; charset="us-ascii"

Hi !

>As far as I'm getting into the creation of a new tool for musicians, I'd be
>glad if someone of you could send me material on
>
>1) using audio.device (channel allocation, sample playing, ...)

attached to the mail is a little prog using audio.device. I wrote it some
years ago in order to learn the usage of audio.device. It used to work (I
can't test it on my PC using UAE because the sound emulation doesn't work)

>2) making Fast Fourier Transform (FFT) and DFT

If someone knows something about FFT, please let me know, too !

Rainer

- --=====================_910074203==_
Content-Type: application/mac-binhex40; name="playsamp.e"
Content-Disposition: attachment; filename="playsamp.e"

   Part 1.2Type: Macintosh BinHex Archive (application/mac-binhex40)

0#5!JC'&dB@aPEMSp4QPXC8aPEQGdD#KKFQFT$5!J)#!J)%P')#KNBA4KF(4b1Me
"E'a[BeCPBb!J+'4KG'&XC@iX)#"048e'Ad0)59!V68904Pp398*-58-T+5!p6NP
- -)#!J)#"85%91)&*KDA0P+%95Adj26890+3dJ)#!J)#"*4JNJ)#"5C@&N)#!J)#!
J+'CTE'9`G()X)'4KG'&`G()X)#"NBA4KE'9Z+5!J)#!J)$`qC'&dB@aPEL"85%9
1)&*KDA0P+%95Adj26%p"4#N0$5mU+LSU+LSU+JP6B@e`E'8JB@*cF'PPE'9Z#5S
U+LSU+LSU,`d0#3P`E'&j8f&YF'aP+$!X)'4KG'&XC@iT$3d[+LSU+LSU+LS*8f&
YF'aP)'&LFh"TC@aPEJNU+LSU+LSU+Lm0)#!J48j%58B0$89B3d939#"%6`dJ)#"
*4L"NBA4KF(4b)&4)48iJ4R*PC9CPBbKNBA4KF(4b+3dJ)#"*4L"QD@aPF(4b)&4
)48iJ3fa[Ff8J)#KQD@aPF(4b+3dJ)#"648a&3e3JCAKMCA"dD@pZ$5!J)#!J)%0
"8d8J49*I6Np28%91)#!l)&"bD@jd4LJRDfpZER4P)%4KG'9T)'jTBfKd)2CQCQj
PEPaZ*bN0)#!J)#!J3d&645"&8Pp16de&65!J)$XJ8(*TER4'+#GVC@PZ)&0`C@P
MD'9bA'iR+3dJ)#!J)#"$390&)%95Adj26N8J)#!J1b"3FQPZG%BS*f&XE'9c)%p
,A'iR+3dJ)#"&6N4648a&3e3048j%8&*23`d0$3d08&*23b"`E'&j8f&YF'aP+(C
[ELaKERST)%K"6N4-43e%48BJBA*PFA9PFh3a1P"88L"86b"TEf&eC'P[,!dJ)#!
JBA*PFA9PFh3b1QP[BA9ND@mX$5!J)#"bCA"XH6%p6NP-1P"88L"86b"YF#`0)#!
J)(*PF'aj-Me158`k8&45)&42)'e`,!dJ)#!JD@pK1P"88L"86b"TEf&eC'P[,!d
J)#!JE@j[C'8k8&45)&42)'eZ,!dJ)#!JBfKTF'*eCM%p6NP-1P"88L"86b"$5%&
5,!dJ)#!JBfKTF'*eCM)p6NP-1P"88L"86b"$5%&5,!dJ)#!JCfmp-#`0)#!J)'4
PGQPMC@9bFQpb26%X$5!J)#"[CQCcCA3X$5!J)#"dD@ePFb`0)#!J)(*PFh30$5!
J)%P')#JJ)#"bCA"XH6%k280bC@&dC8ecCe"[FR3S+5!J)#!J)#!J)#!J)#!J)#!
J)#!J)#!J)#Np6NP-)&4)48iJ8Q&TFf8S49*I6Np36e*8+3dJ)#"*4L!S)#!JFQ9
`E(Nb1Me$FQ9KG'90FfG3Eh*d+#NJ)#!J)#!J)#!J)#!J)#!J)#!J)#!J)#!T28j
*6#"85%91)&*KDA0P+%95Adj28%p59#N0)#!J58BJ+'&bCA&eCA0d-6Sp3h*PBA4
P58p5CA&eCA0d+(*PF'aj-5`J8dPD48p')'P[BA9ND@mT+6e158`J9%K&6L"5B@P
cC5K&8Pp16dP28N94+3d0)#!J,bSJGf&ZG#"dEb"KE'a[Bf&dC5"KEQ3JGA0P)'&
ZH5"MD'&ZEQ9X)(GTG'JJ6h"PEN4PGLJT)#S[$5!J)'&bCA&eCA0d-5jTEbjYELj
XELj`FQNk28&%38a-6d0I68&B8&*&3`dJ)#"KFQ9aG@9cG$%ZD@mZBfpYE@&ZC#!
J1Me"4%004&p"6%a23d&843dJ)#"KFQ9aG@9cG$%ZD@mZCQaKCh-*)$Sp384*6dC
I6NpA38P8$5!J)'&bCA&eCA0d-5jKE'a[BfYPH3NJ1Md`$5!J)'&bCA&eCA0d-5j
NBA4K#5!k29Xa,$)X0#`iA6T$5%&5$5!J)'&bCA&eCA0d-5jXC@jRG'J*)$Sp0$X
0)#!J58BJC'9fD@0PCA*bEh)k28p`C@j%CACTBf8S*f&eC'P[,Q4PGQPMC5FX)$!
X)'&bCA&eCA0d-5`J-#NJ9%K&6L"5B@PcC5K&8Pp16d4&9NP$45N0$5!J)#mU)'0
[F(NJD@pbCA&eCA0d)'C[FL"NEh9LE'8JBR9QCQ9bC@3JEh"PFQ&dD@pZ)#S[$5!
J)'&bCA&eCA0d-5jTEbjMEfeYB@jN1Me$684I9e**9%80)#!JBA*PFA9PFh3a,QP
[,QCXB@Gc)#!k28&%58p'Ae"&8PC26!dJ)#"KFQ9aG@9cG$%ZF'9bD@pN)#!J)$S
p4'Pf+'0XEf0V,#"cB@ebBA4P+3dJ)#"KFQ9aG@9cG$%ZGQpXG@eP)#!J)$SpGQp
XG@eP$5!J)'&bCA&eCA0d-5jMH@0XCA-J)#!J1Mda$5!J)%0[F(P0C@dSBA*PFA9
PFh3a,'&bCA&eCA0d-L`J8dPD48p')'P[BA9ND@mT$3d0)#!J58BJC'&dB@aPEL!
q25!a0M-i0!dJ)#!J)#"*4L!SBfKTF'*eCM%k28&XE'pM9Q9M+$Ja16)X)%e&68C
I3dK*8#Y048e'Ae"93Na*3bNT28j*6#"85%91)&*KDA0P+%95Adj26890+3dJ)#!
J)#"*4L!SBfKTF'*eCM)k28&XE'pM9Q9M+$Ja16)X)%e&68CI3dK*8#Y048e'Ae"
93Na*3bNT28j*6#"85%91)&*KDA0P+%95Adj26890+3d0)#!J)#!JG'PYCA-k23N
J4'Pf+'&ZHL`J)#!i-6Nb+3dJ)#!J)#!JFQ9cG$SpB@jk,8eeE#KdD@ePFb`J1$%
j-LN0)#!J)#!JG'PYCA-k2A4TE@9c)#dJ-Jd0)#!J)#!JE@j[C'8*)#!J)#!k2@&
bCA&eCA0d-JdJ)#!J)#"YEQpNC5jbCA"XHA"[FR3k2A*PF'aj-Jd0)#!J)#!J,bS
JFf9ZC#"QDA*cG#"dGfmJBR9QCQ9b*h-JCR9XE#"dEb"NCACTBf8J+Lm0)#!J)#!
J3fp`H8ePE5KNBA4KF(4b+hC[EL`JBfKTF'*eCM%X)$Ja16)T$5!J)#!J)'pQCR0
PG$Sp1$%j-JdJ)#!J)#"KFQ9aG@9cG$%ZC'&dB5!J1MeMD'P`BR9Q-3dJ)#!J)#"
KFQ9aG@9cG$%ZE'9ZCh4S1Mdi-6Nb$5!J)#!J)'*PCfPZ58mSBA*PFA9PFh3a+3d
J)#!J)#"$Eh"j6@9Y+'4KG'&`G()VGQpZ+fpQCR0PG#`JBfKTF'*eCM)X)$Ja16)
T$5!J)#!J)'pQCR0PG$SpEfCQFf9d)#XJ1$%j-JdJ)#!J)#"KFQ9aG@9cG$)ZC'&
dB5!J1MeMD'P`BR9Q-JdJ)#!J)#"KFQ9aG@9cG$)ZE'9ZCh4S1Mdi-6Nb$5!J)#!
J)'*PCfPZ58mSBA*PFA9PFh3b+3d0)#!J)#!JE@j[C'8k2@&bCA&eCA0d-3N*#5m
U)(GKDA3JEfiJFQ9aG@9cG$%JCQPbFh3JG'PYC5"KFQpeEQ3J+Lm0)#!J)#!J8N9
348&8#3N*#5mU)(9ZG'PX)'4[EQ8X)'YPCA!JCQ9PC'PZCb"NBA4K)(4[)'4PGQP
MC5!U,`d*)&GKDA43Eh*d+'eZEf4P,R*PF'ajF'pbG#N0#5"(CA40FfFJ)#KYEQp
NC5jbCA"XHA"[FR3T$3NJD@pK1MeYEQpNC3d*)%P')'P[B6eKFQ9aG@9cG$%0#5!
J)#"YEQpNC6SpBA*PFA9PFh3b$3NJ48a643d*)#!J)'eZEf4P1MeKFQ9aG@9cG$%
0#5"&6N4*4Jd*)%P')(4TE@9c2$i`$9GbDA4P4LJRA'3J)&aN)#!J)&aNA'iR,'0
SDA"LG@Ba,'0SDA"LG@Bb,'P[B5jNBA4K+3d*)#!J)%0[F(P0C@dSC'&dBA"dFLY
fEfiVEfCQFf9d,#"TEf%ZC'&dB5`J1$%j-LN0#5!J)#"TEf%ZE'9ZCh4S1Mdi-6N
b$3NJ)#!JBQ9RD@j*6bKTEf%T$3NJ)#!JEfCQFf9d1Me[CQCcCA3V1$%j-Jd*)#!
J)%4&3b"dD@ePF`d*)%9-8d9*4L!SG'PYCA-p-#NJ38j%)#KbCA0d2$i`+3eAFQP
dC8BS*eaN)#"FC#!J)#"FC&aZ*baMD'P`BR9Q-5aMD'P`BR9Q-LaTEf%ZC'&dB5N
0#5!J)#"$Eh"j6@9Y+'4KG'&`G()VGQpZ+fpQCR0PG#`JD@pK,Q4KG'%X)(*PFh3
T$3NJ)#!JD@pK,QaPEQGdD$SpFQ9cG!d*)#!J)'*PCfPZ58mSD@pK+3d*)#!J)(*
PFh3k26!0#5"&6&0&$3NJ)#!JCfmk26%0#5!J)#"AB@Pd8'pbG#KYEQpNC5jbCA"
XHA"[FR3T$3NJ)#!J4f9d6A0R)#!SE@j[C'8ZFQ9`E(P`Eh*d+3d*)%914%P'$5!
J)#!J)&919%P-)'G[26%0$5!J)%9-8d80)#!J)#!J58BJ+'0SDA"LG@Ba1Me"E'a
[BeCPBbKKERSX)%e&68CI3dK*8#Y048e'Ae"93Na*3bNT28j*6#"85%91)&*KDA0
P+%95Adj26890+3d0)#!J)#!JE@j[C'8*)#!J)#!k2@&bCA&eCA0d-3dJ)#!J)#"
YEQpNC5jbCA"XHA"[FR3k2A*PF'aj-3d0)#!J)#!J3fp`H8ePE5KNBA4KF(4b+hC
[EL`JBfKTF'*eCM%X)'&ZHLN0)#!J)#!JBA*PFA9PFh3a,Q4KG'%J)$SpBfKTF'*
eCM%0)#!J)#!JBA*PFA9PFh3a,QaPEQGdD$SpB@jk$5!J)#!J)'*PCfPZ58mSBA*
PFA9PFh3a+3dJ)#!J)#"AB@Pd8'pbG#KYEQpNC5jbCA"XHA"[FR3T$5!J)#!J)%G
PG%ecCb!J+'eZEf4P,R*PF'ajF'pbG#N0)#!J48j%58B0$3e&@%0&8&3J4%m0)#!
J58BJBfKTF'*eCM)*)#!J)&4)48iJ4R*PC9CPB`NSBfKTF'*eCM)T$5!J)%P')'0
SDA"LG@Ba#5!J)#"85%91)%CbC@9@C@-*+'0SDA"LG@Ba+3dJ)#"*4L"NCACTBf9
PFR*[FMd`)&4)48iJ3fa[Ff9%CACTBf8*+'&bCA&eCA0d-5N0)#!J58BJBA*PFA9
PFh3a)#!J)#"85%91)%4PE'9dC8P28Q9aG@9cG#KKFQ9aG@9cG$%T$5!J)%P')(*
PF'aj-JNJ)#!J9%K&6L"%C@aPG'90FfG3Eh*d#5KbCA"XH6)T$5!J)%P')(*PF'a
j-3NJ)#!J9%K&6L"%C@aPG'90FfG3Eh*d#5KbCA"XH6%T$5!J)&0&6%9$9#"PH'0
PF(4TEfi0)#!J)#!J3d&645"&8Pp16de&65!J)$XJ8(*TER4'+#GVC@PZ)&0`C@P
MD'9bA'iR+3dJ)#!J)#"$390&)%95Adj28%p59#!J1b"3FQPZG%BS*fY[EQjdC5"
3Eh*d)'jTBfKd)'9bHQ9eCf9ZA'iR+3dJ)#!J)#"$390&)%95Adj258p549%J1b"
3FQPZG%BS*fY[EQjdC5"*6e*PFA9PFh3JEQPMD(3JCA*kCA9RC@jFELFT$5!J)#!
J)%0"8d8J49*I6Np%49C*3d8l)&"bD@jd4LJRDfpZER4P)%&eC'P[,84PGQPMC5"
ZD@0SG#$fCQCZC@jFELFT$5!J)#!J)%0"8d8J49*I6Np145!J)#!l)&"bD@jd4LJ
RB@aXCA-J6dYFELFT$5!J)%914&0&6%9$9!e&6N438Np$$3d0VL!!!!:

- --=====================_910074203==_
Content-Type: text/plain; charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable

============================================================
      //  Rainer M|ller  A1200-030-50MHz 16MB/850MB
     //                  Pentium  166MHz 32MB/2.1GB
    //    have a look at: Aminet:mus/edit/SampleE
\\ //
 \X/  AMIGA for ever !

- --=====================_910074203==_--

@endnode

@node ID5_1 "Audio questions (ID5_1)"
From: sanric@ronet.it (Riccardo Santato)
Date: Sat, 07 Nov 1998 11:28:29 +0100
Subject: Re[2]: Audio questions

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.

- --BOUNDARY.2016174376.1
Content-Type: text/plain

Hello Rainer

I've decoded and compiled your source.
Fine, everything went ok,without any warnings, but when I try to use it with
an argument it always tells me that "konte Datei nicht often !" (or
something
similar) which I think it stands for "CAN'T OPEN FILE".
I've tried either with raw or 8svx samples but nothing to do.
My machine has 32 MgBytes of Ram and I'm sure the file exists.

What can I do ?

Here's attached the decoded source.

- --
======================================================
Santato Riccardo

                               sanric@ronet.it
                               www.geocities.com/SunsetStrip/Stage/6141/
=====================================================



- --BOUNDARY.2016174376.1
Content-Type: text/plain; charset=iso-8859-1; name="suoni_norm.e"
Content-Disposition: attachment; filename="suoni_norm.e"
Content-Transfer-Encoding: quoted-printable

MODULE   'amigalib/io',
       'devices/audio',
           'dos/dos',
          'exec/io', =

     'exec/memory',
  'exec/nodes',
 'exec/ports',
      'graphics/gfxbase'
ENUM ER_NONE, ER_NOOPEN, ER_NOMEM, ER_NOPORT, ER_NOIOREQ, ER_NODEVICE, ER=
_NOLOAD
CONST NTSC_CLOCK=3D3579545,
       PAL_CLOCK=3D3546895
DEF clock
DEF samrate=3D17000
DEF volume=3D64
DEF fileptr=3DNIL
DEF dataptr=3DNIL:PTR TO CHAR
DEF datalen=3DNIL

PROC main() HANDLE
DEF   gfx:PTR TO gfxbase
      gfx:=3Dgfxbase
   IF gfx.displayflags AND PAL THEN clock:=3DPAL_CLOCK ELSE clock:=3DNTSC=
_CLOCK
   IF arg[]<>0
      IF (fileptr:=3DOpen(arg,  MODE_OLDFILE)) =3DNIL THEN Raise(ER_NOOPE=
N)
          datalen:=3DFileLength(arg)
      IF (dataptr:=3DAllocVec(datalen,MEMF_CHIP+MEMF_PUBLIC))=3DNIL THEN =
Raise(ER_NOMEM)
      IF        Read(fileptr, dataptr,  datalen)<>datalen THEN
Raise(ER_NOLOAD)

/********       Sample abspielen        ********/
                playSample(0, datalen)

/********       Sample abspielen        ********/
   ENDIF
EXCEPT DO
   IF dataptr THEN FreeVec(dataptr)
   IF fileptr THEN Close  (fileptr)
   SELECT exception
      CASE ER_NOOPEN  ; PrintF('Non riesco ad aprire il file\n')
      CASE ER_NOMEM   ; PrintF('kein Speicher\n')
      CASE ER_NONE    ; PrintF('alles OK\n')
   ENDSELECT
ENDPROC
PROC playSample(von,anz) HANDLE
DEF arequest1:PTR TO ioaudio,
    arequest2:ioaudio,
    reply1=3DNIL:PTR TO mp,
    reply2=3DNIL:PTR TO mp,
    ioa:PTR TO ioaudio,
    mnode:PTR TO mn,
  chipbuf1=3DNIL:PTR TO CHAR,
    chipbuf2=3DNIL:PTR TO CHAR,
    go=3D0,
    deviceerror=3D1,
    offset,
    times,
    rest
   IF (   reply1:=3DCreateMsgPort())=3DNIL THEN Raise(ER_NOPORT)
   IF (   reply2:=3DCreateMsgPort())=3DNIL THEN Raise(ER_NOPORT)
   IF (arequest1:=3DCreateIORequest(reply1, SIZEOF ioaudio))=3DNIL THEN R=
aise(ER_NOIOREQ)

   /* want to allocate and use any channel with OpenDev() */
   arequest1.io.mn.ln.pri:=3DADALLOC_MAXPREC
   arequest1.io.command  :=3DADCMD_ALLOCATE
   arequest1.io.flags    :=3DADIOF_NOWAIT
   arequest1.allockey    :=3D0
   arequest1.data        :=3D[1,2,4,8]:CHAR
   arequest1.length      :=3D4;
   IF deviceerror:=3DOpenDevice('audio.device', 0, arequest1, 0) THEN Rai=
se(ER_NODEVICE)

   /* copy iorequest for double buffered operation */
   arequest1.io.command:=3DCMD_WRITE
   arequest1.io.flags  :=3DADIOF_PERVOL
   arequest1.period    :=3DDiv(clock, samrate)
   arequest1.volume    :=3Dvolume
   arequest1.cycles    :=3D1
   CopyMem(arequest1,arequest2, SIZEOF ioaudio)

   IF datalen >=3D 16384
      IF (chipbuf1:=3DAllocVec(8192, MEMF_CHIP+MEMF_PUBLIC))=3DNIL THEN R=
aise(ER_NOMEM)
      IF (chipbuf2:=3DAllocVec(8192, MEMF_CHIP+MEMF_PUBLIC))=3DNIL THEN R=
aise(ER_NOMEM)

      times:=3D  Div(anz,   8192)
       rest:=3Danz-Mul(times, 8192)
      times:=3Dtimes - 2

      mnode          :=3Darequest2
      mnode.replyport:=3Dreply2

      /* send first two buffer's full to device */
      CopyMem(dataptr+von, chipbuf1, 8192)
      offset:=3D8192
      arequest1.data  :=3Dchipbuf1
      arequest1.length:=3D8192
      beginIO(arequest1)
      CopyMem(dataptr+von+offset, chipbuf2, 8192)
      offset:=3Doffset + 8192
      arequest2.data  :=3Dchipbuf2
      arequest2.length:=3D8192
      beginIO(arequest2)
      mnode:=3Darequest1                        /* wait on request1 first
time around */
      REPEAT                            /* until done, keep feeding data to
device */
         WaitPort(mnode.replyport)
         GetMsg  (mnode.replyport)
         ioa:=3Dmnode
         IF ioa=3Darequest1
            mnode:=3Darequest2
         ELSE
            mnode:=3Darequest1
         ENDIF
         IF times<>0
WriteF('\d  \d    \d\n',chipbuf1,chipbuf2,ioa.data)
            CopyMem(dataptr+von+offset, ioa.data, 8192)
            ioa.length:=3D8192
            beginIO(ioa)
            offset:=3Doffset+8192
            DEC times
         ELSEIF (times=3D0) AND (rest<>0)
WriteF('\d  \d    \d\n',chipbuf1,chipbuf2,ioa.data)
            CopyMem(dataptr+von+offset, ioa.data, rest)
            ioa.length:=3Drest
            beginIO(ioa)
            rest:=3D0
         ELSE
            go:=3D1
            WaitPort(mnode.replyport)
            GetMsg  (mnode.replyport)
         ENDIF
      UNTIL go=3D1
   ELSE
      IF (chipbuf1:=3DAllocVec(anz, MEMF_CHIP+MEMF_PUBLIC))=3DNIL THEN Ra=
ise(ER_NOMEM)

      mnode          :=3Darequest1
      mnode.replyport:=3Dreply1
      CopyMem(dataptr+von, chipbuf1, anz)
      arequest1.data  :=3Dchipbuf1
      arequest1.length:=3Danz
      beginIO(arequest1)
      WaitPort(mnode.replyport)
      GetMsg  (mnode.replyport)
   ENDIF
EXCEPT DO
   IF chipbuf2      THEN FreeVec        (chipbuf2)
   IF chipbuf1      THEN FreeVec        (chipbuf1)
   IF deviceerror=3D0 THEN CloseDevice  (arequest1)
   IF arequest1     THEN DeleteIORequest(arequest1)
   IF reply2        THEN DeleteMsgPort  (reply2)
   IF reply1        THEN DeleteMsgPort  (reply1)
   SELECT exception
      CASE ER_NOMEM   ; PrintF('kein Speicher\n')
      CASE ER_NOPORT  ; PrintF('konnte Port nicht erzeugen\n')
      CASE ER_NOIOREQ ; PrintF('konnte IORequest nicht erzeugen\n')
      CASE ER_NODEVICE; PrintF('konnte Audio-Device nicht =F6ffnen\n')
      CASE ER_NONE    ; PrintF('alles OK\n')
   ENDSELECT
ENDPROC

- --BOUNDARY.2016174376.1--

@endnode

@node ID5_2 "Audio questions (ID5_2)"
Date: Mon, 9 Nov 1998 12:21:56 +0100 (MET)
From: mfontana@komodo.ing.unico.it (mauro fontana)
Subject: Re: Re[2]: Audio questions

I had a quick look at the code and I have seen that Open() function use
arg as its parameter for the name. If I can remeber right rg is a pointer
to an array of pointers that, in turn, points to the data that are passed
as arguments. So you ought to use args[0] as the name of the filenor arg.

A better solution would be to provide the pogram with an argument parser
witht he use of the ReadArgs() function so that more parameters with a
user readable template coul be used.

M&F

@endnode

@node ID5_3 "Audio questions (ID5_3)"
Date: Mon, 9 Nov 1998 13:10:26 +0100 (MET)
From: subvcbhd@calvados.zrz.TU-Berlin.DE (Henk Jonas)
Subject: Re: Re[2]: Audio questions

On Mon, 9 Nov 1998, mauro fontana wrote:

> I had a quick look at the code and I have seen that Open() function use
> arg as its parameter for the name. If I can remeber right rg is a pointer
> to an array of pointers that, in turn, points to the data that are passed
> as arguments. So you ought to use args[0] as the name of the filenor arg.
>=20
> A better solution would be to provide the pogram with an argument parser
> witht he use of the ReadArgs() function so that more parameters with a
> user readable template coul be used.
There is also a problem with spaces after the filename, if you use arg[0].
You get then to Open() a string just like "df0:blafile.bla ", if you use
ReadArgs() it will be the right "df0:blafile.bla" without spaces added on
the end of the string. This occures mostly if you use a CON: with filename
completing(?) like VNCED or KCON

Henk
- ----------------------------------------------------------------
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

@endnode

@node ID5_4 "Audio questions (ID5_4)"
Date: Tue, 10 Nov 1998 07:22:43 +0100
From: Rainer.M.Mueller@uni-konstanz.de (Rainer =?iso-8859-1?Q?M=FCller?=)
Subject: Re: Re[2]: Audio questions

- --=====================_910675363==_
Content-Type: text/plain; charset="us-ascii"

Hi !

>Fine, everything went ok,without any warnings, but when I try to use it
with
>an argument it always tells me that "konte Datei nicht often !" (or
something
>similar) which I think it stands for "CAN'T OPEN FILE".

Oh no, sorry, this was quite stupid by me not to translate the
errormessages.
Attached is the source with english messages !

>I've tried either with raw or 8svx samples but nothing to do.

This doesn't matter as this is a very primitive example, that plays
everything you put.

>I'm sure the file exists.

may be, but was the path correct ??

>What can I do ?

I managed to get the UAE sound emulation get working and the example
worked. As I mentioned above, are you sure the path to your file you pass
as argument was correct ?? If not try with the correct path (if you have,
use snoopdos !)
If it doesn't help: try this (that way I tested the program some hours ago)

open a shell window, change dir to "ram:", copy "suomi_norm.e" to "ram:",
compile the source "ec suomi_norm", start the prog with "suomi_norm
suomi_norm.e". That worked on my machine !!

Greetings,

   Rainer

- --=====================_910675363==_
Content-Type: application/mac-binhex40; name="suoni_norm.e"
Content-Disposition: attachment; filename="suoni_norm.e"

   Part 1.4Type: Macintosh BinHex Archive (application/mac-binhex40)

bCbN0)#!J)#!J58BJ+'4KG'&`G()k28&XE'pM9Q9M+'4KG'&XC@iX68904Pp$5%P
3+de&68CI8&9#6%P$+5Np6NP-)&4)48iJ8Q&TFf8S49*I6Np048dT$5!J)#!J)%P
'#9*PB@3SCQPXCA"dFL`JC'&dBA"dFL`J)'4KG'&XC@iT2$jNBA4KE'9Z)&4)48i
J8Q&TFf8S49*I6Np-6d&%+3d0,bSU+LSU+LSU#A*PF'aKH5"cB@e`E'8*)#!J)#!
J+LSU+LSU+LS[$3N*F'aKH90KEA"XC5J`,#"NBA4KE'9Z+3d0,bSU+LSU+LSU#A*
PF'aKH5"cB@e`E'8*)#!J)#!J+LSU+LSU+LS[$5!J)%914%P'$3e&@%0&8&3J4%m
0)#!J58BJC'&dBA"dFL"85%91)%CbC@9@C@-SC'&dBA"dFLN0)#!J58BJCQPXCA"
dFL"85%91)%0XEh0P)#!SCQPXCA"dFLN0)#!J8d9-4808)'9iBf9`G'P[EJdJ)#!
J)#"$390&)%95Adj26e"&6L!J1b"3FQPZG%BS*f0[G@aN)'j[G#"[F'9Z)'CTE'9
FELFT$5!J)#!J)%0"8d8J49*I6Np048dJ)#!l)&"bD@jd4LJREQmJE@9YEh*jA'i
R+3dJ)#!J)#"$390&)%95Adj26N8J)#!J1b"3FQPZG%BS*f&XE#"25eaZ*bN0)#!
J48j%8d9-4808$8914&"56d-0$3e38Np$)("XBAP6B@e`E'8SGQpZ,'&ZHLNJ5%&
14%a&$84&4L"KFQ9aG@9cG$%k8&45)&42)'P[BA9ND@mX$5!J)#"KFQ9aG@9cG$)
kD@pKG@4TEb`0)#!J)(*PF'aj-6e158`k8&45)&42)'e`,!dJ)#!JFQ9`E(Nb28j
*6$T39&)J9%mJEA!X$5!J)#"TEf%k8&45)&42)'P[BA9ND@mX$5!J)#"YEQpNC6T
39&)J9%mJE@iX$5!J)#"MD'P`BR9Q-6e158`k8&45)&42)%0)39)X$5!J)#"MD'P
`BR9Q-Me158`k8&45)&42)%0)39)X$5!J)#"REcd`,!dJ)#!JC'9fD@0PCA*bEh)
p-5`0)#!J)'pQCR0PG#`0)#!J)(4TE@9c,!dJ)#!JFQ9cG!d0)#!J58BJ+#!J)(*
PF'aj-6Sp3h*PBA4P6A0R8'pbG#JT+6e158`J9%K&6L"5B@PcC5K&8Pp16e"28P3
T$5!J)%P')#JJ)#"bCA"XH6)k280bC@&dC8ecCe"[FR3S+5Np6NP-)&4)48iJ8Q&
TFf8S49*I6Np36e*8+3dJ)#"*4L!SBA*PFA9PFh3a1Me$FQ9KG'9*6e*PFA9PFh3
SFQ9`E(Na,#"659T&6dBJD@pKG@4TEbNT28j*6#"85%91)&*KDA0P+%95Adj258p
549%T$3dJ)#![+L"hB@jd)(4[)'&XE'pMBA4P)'&ZC#"eFf8JB@jj)'0SB@jZC@`
JGfPdD#"2F'9Z4'9f+#NJ+Lm0)#!JBA*PFA9PFh3a,QP[,QeZ,QaZ,R"bD6Sp384
"6%a23ep039K38N9$$5!J)'&bCA&eCA0d-5jTEbjMEfeYB@jN)#!k28&%3de%Ad&
- -6%p$394&$5!J)'&bCA&eCA0d-5jTEbjQE'&RF`NJ1Me"4%P24Pp16eG"5930)#!
JBA*PFA9PFh3a,Q&XE'pMDf9j#5!k26!0)#!JBA*PFA9PFh3a,Q4KG'%*)$Sp@c%
X-L`d,$KG1N0)39)0)#!JBA*PFA9PFh3a,QaPEQGdD!NJ1Mdd1`dJ)#"*4L"NCAC
TBf9PFR*[FMSp6h"PEN4PGQPMC5JRBA9ND@mZC'9fD@0P*b`J-#`JBA*PFA9PFh3
a,#!`+5"85%91)&*KDA0P+%95Adj24%9@580&+3d0)#!J,bSJBfp`H5"TEh*PFA9
PFh3JCQpb)'4[G@*XC5"LG@CQCA*PC#"[F'9bBA4TEfiJ+Lm0)#!JBA*PFA9PFh3
a,QP[,Q0[E@eKEQ3k28004&pA8NP843dJ)#"KFQ9aG@9cG$%ZD@mZCQaKCh-J)$S
p384*6dCI8%959Np-$5!J)'&bCA&eCA0d-5j`CA*TEf3J)#!J1Me%DABSBfa[BfX
X)(0KEA*KG'8T$5!J)'&bCA&eCA0d-5jfEfaeE@8J)#!J1MefEfaeE@80)#!JBA*
PFA9PFh3a,Q0jBfaPFb!J)#!k26%0)#!J3fp`H8ePE5KKFQ9aG@9cG$%XBA*PFA9
PFh3b,#"659T&6dBJD@pKG@4TEbN0$3dJ)#"*4L"NBA4KE'9Z)$ip)$%f-cJd$5!
J)#!J)%P')#KMD'P`BR9Q-6Sp3@aXEf0@C@-S1$%j-L`J68904Pp$5%P3+de&68C
I8&9#6%P$+5Np6NP-)&4)48iJ8Q&TFf8S49*I6Np048dT$5!J)#!J)%P')#KMD'P
`BR9Q-MSp3@aXEf0@C@-S1$%j-L`J68904Pp$5%P3+de&68CI8&9#6%P$+5Np6NP
- -)&4)48iJ8Q&TFf8S49*I6Np048dT$3dJ)#!J)#"dD@ePFcSp#5"%DABSB@jk,#!
J)$Ja16)T$5!J)#!J)#"bCA0d1MeKERSY6A9X+(4TE@9c,#!i-6Nb+3dJ)#!J)#"
dD@ePFcSpG'PYCA-J,5!b$3dJ)#!J)#"YEQpNC3NJ)#!J)$SpBA*PFA9PFh3b$5!
J)#!J)'eZEf4P,R*PF'ajF'pbG$SpFQ9`E(Nb$3dJ)#!J)#![+L"cC@jN)'CTFR0
d)(4hEb"LG@CQCA)RFb"QG@aX)(4[)'4PGQPMC5!U,`dJ)#!J)#"$Eh"j6@9Y+'4
KG'&`G()VGQpZ,#"MD'P`BR9Q-5`J1$%j-LN0)#!J)#!JEfCQFf9d1Mdi-6Nb$5!
J)#!J)'&bCA&eCA0d-5jNBA4K)#!k2@0SDA"LG@Ba$5!J)#!J)'&bCA&eCA0d-5j
XC@jRG'Jk26Ja16)0)#!J)#!JBQ9RD@j*6bKKFQ9aG@9cG$%T$5!J)#!J)%0[F(P
0C@dSC'&dBA"dFLYfEfiVEfCQFf9d,#"MD'P`BR9Q-L`J1$%j-LN0)#!J)#!JEfC
QFf9d1Me[CQCcCA3J+b!i-6Nb$5!J)#!J)'&bCA&eCA0d-LjNBA4K)#!k2@0SDA"
LG@Bb$5!J)#!J)'&bCA&eCA0d-LjXC@jRG'Jk26Ja16)0)#!J)#!JBQ9RD@j*6bK
KFQ9aG@9cG$)T$5!J)#!J)'eZEf4P1MeKFQ9aG@9cG$%*#3N[+L"hB@Pd)'pZ)(*
PFA9PFh3a)'CTFR0d)(4TE@8JBA*[G@jN)#S[$3dJ)#!J)#"549"&393*#3N*,bS
JG@jdD@`JC'pZC5`JDf9PF#"QC@9ND@jR)'4KG'%JG'mJC'9fD@0P)#S[$3NJ9f&
TG&"[FR3SE@j[C'8ZFQ9`E(P`Eh*d+3d*)%GPG%ecCb!J+'eZEf4P,R*PF'ajF'p
bG#N0#5"TEf%k2@eZEf4P$3NJ58BJD@pK2@&bCA&eCA0d-3d*)#!J)'eZEf4P1Me
KFQ9aG@9cG$)0#5"&6&0&$3NJ)#!JE@j[C'8k2@&bCA&eCA0d-3d*)%914%P'$3N
J58BJG'PYCA-m2M!09h*TG'9'+#GFC#!JA'3J)#!JA'4FELFXBfKTF'*eCM%XBfK
TF'*eCM)XD@pK,Q4KG'%T$3NJ)#!J3fp`H8ePE5KNBA4KF(4b+hC[ELY[CQCcCA3
X)'P[B5jNBA4K,#!i-6Nb+3d*)#!J)'P[B5jXC@jRG'Jk26Ja16)0#5!J)#"LC@G
TENP2+'P[B5N0#5!J)#"[CQCcCA3k2@pQCR0PG#Xi-6Nb$3NJ)#!J4%9$)(4TE@9
c$3NJ48a648P')#KdD@ePFcd`+5""6N3J+(*PFh3m2M!T$9GbDA4P4LJRA'3J)&a
N)#!J)&aNA'iR,'0SDA"LG@Ba,'0SDA"LG@Bb,'P[B5jNBA4K+3d*)#!J)%0[F(P
0C@dSC'&dBA"dFLYfEfiVEfCQFf9d,#"TEf%ZC'&dB5`JFQ9cG#N0#5!J)#"TEf%
ZE'9ZCh4S1MebCA0d$3NJ)#!JBQ9RD@j*6bKTEf%T$3NJ)#!JFQ9cG$Sp-!d*)%9
- -8d80#5!J)#"REcSp-3d*)#!J)&GKDA43Eh*d+'eZEf4P,R*PF'ajF'pbG#N0#5!
J)#"(CA40FfFJ)#KYEQpNC5jbCA"XHA"[FR3T$3NJ48j%58B0)#!J)#!J98j858`
JCfmp-3d0)#!J48a643dJ)#!J)#"*4L!SBfKTF'*eCM%k28&XE'pM9Q9M+'&ZHL`
J68904Pp$5%P3+de&68CI8&9#6%P$+5Np6NP-)&4)48iJ8Q&TFf8S49*I6Np048d
T$3dJ)#!J)#"YEQpNC3NJ)#!J)$SpBA*PFA9PFh3a$5!J)#!J)'eZEf4P,R*PF'a
jF'pbG$SpFQ9`E(Na$5!J)#!J)%0[F(P0C@dSC'&dBA"dFLYfEfiX)'0SDA"LG@B
a,#"KERST$5!J)#!J)'&bCA&eCA0d-5jNBA4K)#!k2@0SDA"LG@Ba$5!J)#!J)'&
bCA&eCA0d-5jXC@jRG'Jk2@&ZHJdJ)#!J)#"LC@GTENP2+'&bCA&eCA0d-5N0)#!
J)#!J9f&TG&"[FR3SE@j[C'8ZFQ9`E(P`Eh*d+3dJ)#!J)#"(CA40FfFJ)#KYEQp
NC5jbCA"XHA"[FR3T$5!J)%914%P'$3e&@%0&8&3J4%m0)#!J58BJBfKTF'*eCM)
*)#!J)&4)48iJ4R*PC9CPB`NSBfKTF'*eCM)T$5!J)%P')'0SDA"LG@Ba#5!J)#"
85%91)%CbC@9@C@-*+'0SDA"LG@Ba+3dJ)#"*4L"NCACTBf9PFR*[FMd`)&4)48i
J3fa[Ff9%CACTBf8*+'&bCA&eCA0d-5N0)#!J58BJBA*PFA9PFh3a)#!J)#"85%9
1)%4PE'9dC8P28Q9aG@9cG#KKFQ9aG@9cG$%T$5!J)%P')(*PF'aj-JNJ)#!J9%K
&6L"%C@aPG'90FfG3Eh*d#5KbCA"XH6)T$5!J)%P')(*PF'aj-3NJ)#!J9%K&6L"
%C@aPG'90FfG3Eh*d#5KbCA"XH6%T$5!J)&0&6%9$9#"PH'0PF(4TEfi0)#!J)#!
J3d&645"&8Pp16de&65!J)$XJ8(*TER4'+#GZEb"YC@e[FRPFELFT$5!J)#!J)%0
"8d8J49*I6Np36e*8)#!l)&"bD@jd4LJRBfpeE'3JEQpd)'0bC@&dC5"`Eh*dA'i
R+3dJ)#!J)#"$390&)%95Adj258p549%J1b"3FQPZG%BS*f0[G@aN)'j[G#"MFQ9
KG'8JD@pbCA&eCA0dA'iR+3dJ)#!J)#"$390&)%95Adj24%9@580&1b"3FQPZG%B
S*f0[G@aN)'j[G#"[F'9Z)'&eC'P[,@4PGQPMC9aZ*bN0)#!J)#!J3d&645"&8Pp
16dj&)#!J)$XJ8(*TER4'+#GKE'`J6dYFELFT$5!J)%914&0&6%9$9!e&6N438Np
$$3eqr`!!:

- --=====================_910675363==_
Content-Type: text/plain; charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable

============================================================
      //  Rainer M|ller  A1200-030-50MHz 16MB/850MB
     //                  Pentium  166MHz 32MB/2.1GB
    //    have a look at: Aminet:mus/edit/SampleE
\\ //
 \X/  AMIGA for ever !

- --=====================_910675363==_--

@endnode



@node ID6_0 "subscribe? (ID6_0)"
From: dissident@mail.telepac.pt (Roberto)
Date: Thu, 05 Nov 1998 02:13:02 +0100
Subject: subscribe?

 What's the procedure to subscribe this list?

- --
rOBERTo ->dissident@mail.telepac.pt<- ICQ:14501808

@endnode



@node ID7_0 "MUI problem (ID7_0)"
Date: Thu, 5 Nov 1998 12:27:56 +0100 (MET)
From: szczepan@student.man.bialystok.pl ("Marcin Juszkiewicz
(Szczepan/BlaBla)")
Subject: MUI problem

 Hi

 In my program I had :

 DEF linia

 linia := RectangleObject,
                MUIA_RectangleHBar, MUI_TRUE,
                MUIA_Weight,1
          End

and later in GUI definition :

  Child, linia,
  Child, ...

But it doesn't works - next Childs are coming or not. But when I insert :

  Child, RectangleObject, -> other like in linia definition
    End,
  Child, ...

 It works ok.

 Why ?

- ------
 Marcin Juszkiewicz (Szczepan/BlaBla)   *Team Amiga*
 szczepan@student.man.bialystok.pl http://student.man.bialystok.pl/szczepan/
 A1200 BlizzIv 2+8MB RAM 425MB HDD x8 CD
 Author of MultiView for OS 2.0+ -> Aminet:util/sys/2b_mv_os2_x.lha

@endnode

@node ID7_1 "MUI problem (ID7_1)"
Date: Thu, 05 Nov 1998 16:56:44 +0100
From: gamboni@fastnet.ch (Maxime Gamboni)
Subject: Re: MUI problem

Marcin Juszkiewicz (Szczepan/BlaBla) wrote:

>  Hi
>
>  In my program I had :
>
>  DEF linia
>
>  linia := RectangleObject,
>                 MUIA_RectangleHBar, MUI_TRUE,
>                 MUIA_Weight,1

Forgot a comma here. But I guess this is just some typo mistake, as EC would
have remarked it.

>           End
>
> and later in GUI definition :
>
>   Child, linia,
>   Child, ...
>
> But it doesn't works - next Childs are coming or not. But when I insert :

The code seems right... I do not understand what happens. What do you mean
here?

>
>
>   Child, RectangleObject, -> other like in linia definition
>     End,
>   Child, ...
>
>  It works ok.
>
>  Why ?

That's very strange. Are you sure that you wrote exactely the same code in
both
cases and that you are using your linia variable exactely once (i.e. not
give it
twice or more as children)?

                            Maxime

@endnode



@node ID8_0 "Another small survey (ID8_0)"
Date: Thu, 5 Nov 1998 13:46:02 +0100 (MET)
From: mfontana@komodo.ing.unico.it (mauro fontana)
Subject: Another small survey

As there is not a stated limit for the length of the filenames
(path+name), or however, not one that I am aware of, I usually write my
programs to support filenames of at least 256 chars. I think this should
be enough for many subdirectories (at least 7 of 32 bytes, that should be
the maximum lenght allowed for the name of a file, and the name of the
file itself).

Do you know if the filesystem has an harcoded limit (has it some fields in
his structures that limit the size of the paths)? What is the filename
size do you usually support in your programs?

Thanks

M&F

@endnode

@node ID8_1 "Another small survey (ID8_1)"
From: Peter.Karlsson@swipnet.se (Peter Karlsson)
Date: Thu, 05 Nov 1998 14:13:37 +0100
Subject: Re: Another small survey

Hello mauro

Look what mauro fontana wrote 05-Nov-98:

> As there is not a stated limit for the length of the filenames
> (path+name), or however, not one that I am aware of, I usually write my
> programs to support filenames of at least 256 chars.

One quick look at EMODULES:dos/dos.m shows this:

(----) OBJECT fileinfoblock
(   0)   diskkey:LONG
(   4)   direntrytype:LONG
(   8)   filename[108]:ARRAY OF CHAR    <--
( 116)   protection:LONG
( 120)   entrytype:LONG
( 124)   size:LONG
( 128)   numblocks:LONG
( 132)   datestamp:datestamp (or ARRAY OF datestamp)
( 144)   comment[80]:ARRAY OF CHAR
( 224)   owneruid:INT
( 226)   ownergid:INT
( 228)   reserved[32]:ARRAY OF CHAR
(----) ENDOBJECT     /* SIZEOF=260 */

However, a C include file shows the following:

struct FileInfoBlock {
   LONG   fib_DiskKey;
   LONG   fib_DirEntryType;  /* Type of Directory. If < 0, then a plain
file.
         * If > 0 a directory */
   char   fib_FileName[108]; /* Null terminated. Max 30 chars used for now
*/
   LONG   fib_Protection;    /* bit mask of protection, rwxd are 3-0.    */
   LONG   fib_EntryType;
   LONG   fib_Size;      /* Number of bytes in file */
   LONG   fib_NumBlocks;     /* Number of blocks in file */
   struct DateStamp fib_Date;/* Date file last changed */
   char   fib_Comment[80];  /* Null terminated comment associated with file
*/

   /* Note: the following fields are not supported by all filesystems. */
   /* They should be initialized to 0 sending an ACTION_EXAMINE packet. */
   /* When Examine() is called, these are set to 0 for you.  */
   /* AllocDosObject() also initializes them to 0.   */
   UWORD  fib_OwnerUID;  /* owner's UID */
   UWORD  fib_OwnerGID;  /* owner's GID */

   char   fib_Reserved[32];
}; /* FileInfoBlock */

This suggests that the filename has max 30 chars.

Regards
- --
Peter Karlsson. Amiga User. ICQ #15875673

@endnode

@node ID8_2 "Another small survey (ID8_2)"
Date: Thu, 05 Nov 1998 09:19:09 -0500
From: max2@ordigraphe.com ("Maxim Olivier-Adlhoch")
Subject: Re: Another small survey

Peter Karlsson wrote:
>
> Hello mauro
>
> Look what mauro fontana wrote 05-Nov-98:
>
> > As there is not a stated limit for the length of the filenames
> > (path+name), or however, not one that I am aware of, I usually write my
> > programs to support filenames of at least 256 chars.
>
>

I know that it is not written explicitely anywhere but the max lenght of a
filename IS 30 chars and the maximum length for the path is 107 chars (but
I'm
not sure 107 chars includes the filename, but I think so)..

try it creating something larger, the system will warn you or truncate the
name
for you!

- -Maxim
- --
- ----------------------
Maxim Olivier-Adlhoch
- ----------------------
max2@ordigraphe.com
- ----------------------
Are you a programer... Then Visit STEEL(c) Web Site  before you're left
in the cold...
http://www.geocities.com/SiliconValley/Network/7002/steel_welcome.html
@endnode

@node ID8_3 "Another small survey (ID8_3)"
Date: Thu, 5 Nov 1998 15:32:06 +0100 (MET)
From: subvcbhd@calvados.zrz.TU-Berlin.DE (Henk Jonas)
Subject: Re: Another small survey

On Thu, 5 Nov 1998, Maxim Olivier-Adlhoch wrote:

> Peter Karlsson wrote:
> >=20
> > Hello mauro
> >=20
> > Look what mauro fontana wrote 05-Nov-98:
> >=20
> > > As there is not a stated limit for the length of the filenames
> > > (path+name), or however, not one that I am aware of, I usually write =
my
> > > programs to support filenames of at least 256 chars.
> >=20
> >
>=20
> I know that it is not written explicitely anywhere but the max lenght of =
a
> filename IS 30 chars and the maximum length for the path is 107 chars (bu=
t I'm
> not sure 107 chars includes the filename, but I think so)..
This limitation comes only from the FastFileSystem, differnt FileSystem
have different limitations. So PLEASE use more then only 30 chars for the
filename and 107 chars for the complete name. Maybe i think also 256
inlucde the "0" is a very compatible way to hold the complete path and
also the single filename (try to imagine you use a FileSystem for long
Win95 filenames, they are up to 256 chars)

Henk
- ----------------------------------------------------------------
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

@endnode

@node ID8_4 "Another small survey (ID8_4)"
Date: Thu, 05 Nov 1998 16:57:48 +0100
From: gamboni@fastnet.ch (Maxime Gamboni)
Subject: Re: Another small survey

Hello.

Henk Jonas wrote:

> On Thu, 5 Nov 1998, Maxim Olivier-Adlhoch wrote:
>
> > Peter Karlsson wrote:
> > >
> > > Hello mauro
> > >
> > > Look what mauro fontana wrote 05-Nov-98:
> > >
> > > > As there is not a stated limit for the length of the filenames
> > > > (path+name), or however, not one that I am aware of, I usually write
my
> > > > programs to support filenames of at least 256 chars.
> > I know that it is not written explicitely anywhere but the max lenght of
a
> > filename IS 30 chars and the maximum length for the path is 107 chars
(but I'm
> > not sure 107 chars includes the filename, but I think so)..
> This limitation comes only from the FastFileSystem, differnt FileSystem
> have different limitations. So PLEASE use more then only 30 chars for the
> filename and 107 chars for the complete name. Maybe i think also 256
> inlucde the "0" is a very compatible way to hold the complete path and
> also the single filename (try to imagine you use a FileSystem for long
> Win95 filenames, they are up to 256 chars)

I remember reading that the new FastFileSystem (the one that displayed that
dreadful
warning message at startup some weeks ago ;-) was supposed to support 128
char long
filenames. I haven't found this again, so I'm not sure, but I know that that
future
filesystem _will_ support more than thirty chars.

                            Maxime

@endnode

@node ID8_5 "Another small survey (ID8_5)"
Date: Fri, 6 Nov 1998 08:32:24 +0100 (MET)
From: szczepan@student.man.bialystok.pl ("Marcin Juszkiewicz
(Szczepan/BlaBla)")
Subject: Re: Another small survey

On Thu, 5 Nov 1998, Maxim Olivier-Adlhoch wrote:

- ->> > As there is not a stated limit for the length of the filenames
- ->> > (path+name), or however, not one that I am aware of, I usually write
my
- ->> > programs to support filenames of at least 256 chars.
- ->
- ->I know that it is not written explicitely anywhere but the max lenght of
a
- ->filename IS 30 chars and the maximum length for the path is 107 chars
(but I'm
- ->not sure 107 chars includes the filename, but I think so)..

You always can use relative path so 256 for full path+name can be not
enough. This problem was on c.s.a.p. about one year ago.

- ------
 Marcin Juszkiewicz (Szczepan/BlaBla)   *Team Amiga*
 szczepan@student.man.bialystok.pl http://student.man.bialystok.pl/szczepan/
 A1200 BlizzIv 2+8MB RAM 425MB HDD x8 CD
 Author of MultiView for OS 2.0+ -> Aminet:util/sys/2b_mv_os2_x.lha

@endnode

@node ID8_6 "Another small survey (ID8_6)"
Date: Fri, 6 Nov 1998 09:19:46 +0100 (MET)
From: mfontana@komodo.ing.unico.it (mauro fontana)
Subject: Re: Another small survey

> ->> > As there is not a stated limit for the length of the filenames ->>
> > (path+name), or however, not one that I am aware of, I usually write
> my ->> > programs to support filenames of at least 256 chars.  -> ->I
> know that it is not written explicitely anywhere but the max lenght of a
> ->filename IS 30 chars and the maximum length for the path is 107 chars
> (but I'm ->not sure 107 chars includes the filename, but I think so)..
>
> You always can use relative path so 256 for full path+name can be not
> enough. This problem was on c.s.a.p. about one year ago.

Ok, that's exacly what I meant (though as said before 256 is enough for 7
sub directories and the filename itself if all are 32 chars long).

However, once the problem has been identified, a solution should be found
as well. So the question remains... taken that 30 il the maximum limit of
a file name, and that 256 chars could not be enough, well what is the most
reasonable number for you?

Following your idea any number is enough as fixed one I can always create
as many relative paths as I want in order to go beyond it. This is more a
matematical statement, and can be applied practically everywhere in the
programming field. The solution is to use reasonable values that are going
to suit most of the cases without wasting too much resources to support
cases that are not going to happen very often (or not at all).

So, is 512 a better number? Or 1024? or 2048? I though 256 was good
enough... what do you use in your programs?

M&F

P.S. I don't read the C.S.A.x newsgroups but very rarely. So probably you
can send the solution they found there (if they ever found one).

@endnode

@node ID8_7 "Another small survey (ID8_7)"
Date: Fri, 6 Nov 1998 09:24:55 +0100 (MET)
From: mfontana@komodo.ing.unico.it (mauro fontana)
Subject: Re: Another small survey

> One quick look at EMODULES:dos/dos.m shows this:
>
> (----) OBJECT fileinfoblock
> (   0)   diskkey:LONG
> (   4)   direntrytype:LONG
> (   8)   filename[108]:ARRAY OF CHAR    <--
[...]

> struct FileInfoBlock {
>    LONG   fib_DiskKey;
>    LONG   fib_DirEntryType;  /* Type of Directory. If < 0, then a plain
> file.
>          * If > 0 a directory */
>    char   fib_FileName[108]; /* Null terminated. Max 30 chars used for now
[...]

All right, but this applies for file names, that is the only for the
name of the file and not its complete path. The problem is how many of
this 30 (or 32) chars can be put together before going outside some
hardcoded limits in the filesystem(s) (if one ever exists) and which is
the best supposed number to use in order to maximize cost/performance
(meant as most probable case suppported related with the use of
resources).

M&F

@endnode

@node ID8_8 "Another small survey (ID8_8)"
Date: Fri, 06 Nov 1998 11:42:21 +0100
From: ss37@irz301.inf.tu-dresden.de (Sven Steiniger)
Subject: Re: Another small survey

> However, once the problem has been identified, a solution should be found
> as well. So the question remains... taken that 30 il the maximum limit of
> a file name, and that 256 chars could not be enough, well what is the most
> reasonable number for you?
>
> So, is 512 a better number? Or 1024? or 2048? I though 256 was good
> enough... what do you use in your programs?

I always use 256, E-strings and exception-handler. It works
like this:

RAISE "adpt" IF AddPart()=DOSFALSE  -> I'am not sure about DOSFALSE
...
  AddPart(my_estring, new_subdir, StrMax(my_estring))
  SetStr(my_estring, StrLen(my_estring))

So you always get an exception if filename is too long.

- --
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.
(..."Happiness is not a state; it's a process.", Ali Graham)
@endnode

@node ID8_9 "Another small survey (ID8_9)"
From: frosetti@hotmail.com ("Dennis Andersson")
Subject: Re: Another small survey
Date: Fri, 06 Nov 1998 03:08:03 PST

>
>> However, once the problem has been identified, a solution should be
found
>> as well. So the question remains... taken that 30 il the maximum
limit of
>> a file name, and that 256 chars could not be enough, well what is the
most
>> reasonable number for you?
>>
>> So, is 512 a better number? Or 1024? or 2048? I though 256 was good
>> enough... what do you use in your programs?
>
>I always use 256, E-strings and exception-handler. It works
>like this:
>
>RAISE "adpt" IF AddPart()=DOSFALSE  -> I'am not sure about DOSFALSE
>...
>  AddPart(my_estring, new_subdir, StrMax(my_estring))
>  SetStr(my_estring, StrLen(my_estring))
>
>So you always get an exception if filename is too long.
>

I always use 1024 to be on the safe side.

Dennis

______________________________________________________
Get Your Private, Free Email at http://www.hotmail.com
@endnode



@node ID9_0 "CSV to guide problem (ID9_0)"
Date: Fri, 6 Nov 1998 10:29:26 GMT
From: I2683@www2.uportu.pt (Mark Marques)
Subject: CSV to guide problem

hello ...
I am trying to program a small program that can convert a simple text to an
Amigaguide file...
Is there anyone how to make E recognize "escape codes" like "[31m" or
similar an tranform them into Aguide nodes ?
I tried something like reading a complete line of the text and then aplly a
char by char routine ... but when it reaches those escape codes it simply
reports an error ...
What am I doing wrong ?

MArk MArques

@endnode

@node ID9_1 "CSV to guide problem (ID9_1)"
Date: Fri, 06 Nov 1998 11:46:52 +0100
From: ss37@irz301.inf.tu-dresden.de (Sven Steiniger)
Subject: Re: CSV to guide problem

> I am trying to program a small program that can convert a simple text to
an
> Amigaguide file...
> Is there anyone how to make E recognize "escape codes" like "[31m" or
> similar an tranform them into Aguide nodes ?
> I tried something like reading a complete line of the text and then aplly
a
> char by char routine ... but when it reaches those escape codes it simply
> reports an error ...

Did EC report an error or your program? In the first case please
remember that "escape codes" are no characters but character
sequences. So you must check for character "[31" and then for
"m". Maybe that's the problem. And the second case is your fault :(

If nothing helps, you should send the "char by char" routine
to this list.

Ciao.

- --
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.
(..."Happiness is not a state; it's a process.", Ali Graham)
@endnode

@node ID9_2 "CSV to guide problem (ID9_2)"
From: M.Tjoelker@nl.cis.philips.com (Menno Tjoelker)
Subject: Re[2]: CSV to guide problem
Date: Sat, 7 Nov 98 19:36:40 -0100

Sven Steiniger wrote about Re: CSV to guide problem:

> > I am trying to program a small program that can convert a simple text t=
o an
> > Amigaguide file...
> > Is there anyone how to make E recognize "escape codes" like "[31m" or
> > similar an tranform them into Aguide nodes ?
> > I tried something like reading a complete line of the text and then apl=
ly a
> > char by char routine ... but when it reaches those escape codes it simp=
ly
> > reports an error ...

> Did EC report an error or your program? In the first case please
> remember that "escape codes" are no characters but character
> sequences. So you must check for character "[31" and then for
> "m". Maybe that's the problem. And the second case is your fault :(

This is wrong. The sequences begin with either CSI ($9B) or ESC-[, these
should be considered equal. The digits are ASCII characters. Other
characters than digits also occur. Multiple arguments are separated by a
semicolon. The end of the sequence is: "@"=A0<=3D=A0character=A0<=3D=A0"~",=
 possibly
preceded by a space (this makes a difference).

It is not known what the arguments mean until the end of the sequence has
been reached. This is a little irritating but avoids the problems of
formats with the number at the end - what if a digit follows the sequence?

If you are using a character by character routine, why do you read a line
at a time? This may cause trouble if a line is too long. The DOS function
UnGetC() is useful when reading a character at a time (it is not necessary
when parsing escape codes, though).

Jilles Tjoelker

- --
- ---
Jilles Tjoelker     |
Craterlaan 6        |   Tel. : +31.40.2427420
5632 AG Eindhoven   |   Fax  : +31.40.2427420 (on request)
The Netherlands     |

*** Author of Iris (mailer), Activity (activity meter),    ***
*** Select_Host (NapsaTerm frontend), Solitaire (WB game), ***
*** Metronome (tool for musicians), etc.                   ***
@endnode

@node ID9_3 "CSV to guide problem (ID9_3)"
Date: Mon, 9 Nov 1998 12:34:25 +0100 (MET)
From: mfontana@komodo.ing.unico.it (mauro fontana)
Subject: Re: CSV to guide problem

On Fri, 6 Nov 1998, Mark Marques wrote:

> hello ...
> I am trying to program a small program that can convert a simple text to
an
> Amigaguide file...
> Is there anyone how to make E recognize "escape codes" like "[31m" or
> similar an tranform them into Aguide nodes ?
> I tried something like reading a complete line of the text and then aplly
a
> char by char routine ... but when it reaches those escape codes it simply
> reports an error ...
> What am I doing wrong ?

A am not sure if I have understood what you mean here. If you are trying
to transform ANSI codes into AmigaGuide codes (not nodes) well, you should
interpret all the chars that make up an ANSI code till you understand the
meaning of that escape code and transform it in the relative AMigaGuide
codes. I do not know ANSI codes, but I think doing a direct transformation
should not be that difficult. The fact that the program cannot interpret
the escape character is a problem related with your own program not
AmigaE. A char is a number and so you are always able to do comparisons to
know what character is (if you compre succesfully a char with 13 you know
you get a CarriageReturn char, if the right comparison is with 8 you get a
tab and so on). This way you can interpret even character that are not
printable but are part of the ASCII file.
Reading a line at time is not an error, but firstly it is useless in this
situation and secondly you have to be sure the space you allocatefor the
line is always enough to store a line of a general length (so you should
use a dynamic allocation that expands as the length of the line to load
its bigger than the size of the already allocated buffer). Using a fixed
length may be good for a particular purpose but not fr general usage.

Is there a list of escape codes somewhere so that I can use them myself?

M&F

@endnode



@node ID10_0 "OBJECTS and getting the size of data (ID10_0)"
Date: Mon, 9 Nov 1998 04:17:26 -0800 (PST)
From: digitaldave98@yahoo.com (David Arbuthnot)
Subject: OBJECTS and getting the size of data

 Hi All,


I am writing some data to a file from an object and i have a few problems

(1). How can i get the size of the memory the element points to ???

     OBJECT bla
        bla:LONG
     ENDOBJECT

     PROC savebla(outfile) OF bla IS Fwrite(outfile,self.bla,6,1)

     PROC main()

     DEF b:PTR TO bla,outfile
     NEW bla

     bla.bla:='blabla'

     IF outfile:=Open('blabla.test',NEWFILE)
        b.savebla(outfile)
        Close(outfile)
     ENDIF

     ENDPROC

     The above works but i know for a fact the data is not always
     going to be 6 bytes long for example
     if bla.bla:='blablabla' the output to file would still be "blabla"

     Help if possible and please send some examples otherwise i will
     check in to a mental asylum !!!!!!!!

On an opposite note (reading data)

(2). Once i have written some binary data to a file how can i
     figure out what the data is supposed to be i know that i
     can use "seek" but dont know how to use the function ???

     BTW how do i get the data once seek has found it ???

< Digital Dave 98 >

(Or For those of you that read in Hex)

$60326873717384657632686586693257563262

E + MUI = Easier GUI coding
C + MUI = The most complex high level language this              side of the
sun and the best GUI coding           system in this universe

Amiga   = The only computer you can run a billion           programs on at
once
          (Provided you've got enough memory of course)

PC      = The only computer this side of the sun that           wont do
anything
          unless you give it 2,000,000 Gigs of memory            or a kick
up the rear end

<br><hr size=1><b>DO YOU YAHOO!?</b><br>Get your free @yahoo.com address at
<a href="http://mail.yahoo.com">Yahoo! Mail</a>.<br>

@endnode



@node ID11_0 "<none> (ID11_0)"
Date: Mon, 9 Nov 1998 13:38:31 +0100 (MET)
From: mfontana@komodo.ing.unico.it (mauro fontana)
Subject: <none>

I had problem with this HTML mail, so sorry if it does not look right for
you, but it didn't fo mee too.

     The above works but i know for a fact the data is not always
     going to be 6 bytes long for example
     if bla.bla:='blablabla' the output to file would still be "blabla"

     Help if possible and please send some examples otherwise i will
     check in to a mental asylum !!!!!!!!

It quite simple as bla is just a string. You can simply use StrLen(bla) to
know its size:

len := StrLen(bla)

and len is going to hold its length depending on how defined it.

(2). Once i have written some binary data to a file how can i
     figure out what the data is supposed to be i know that i
     can use "seek" but dont know how to use the function ???

     BTW how do i get the data once seek has found it ???

I have not understood here. You write binary data to a file and then you
try to get them back again?
1) You can use your on copy of the data not those in the file.
2) If you want to verify the data you wrote then I would not use Seek() as
not all devices are able to handle a backward seek (pipe for example). If
you are going to verify the written data only at the end of the file, that
is when you have written all the binary data, it is much simpler to
reload the complete file again once you have closed it.

Can you give more info?

M&F

P.S. Please don't use HTML format in your e-mail. Some of us are still
using old programs that are not able to handle it. It is quite useless to
have HTML code in the mail, so, please, don't use it. I had to do some
manual formatting to this mail. It is quite annoying and not a good thing
one wants to do for every e-mail.

@endnode

@node ID11_1 "<none> (ID11_1)"
Date: Mon, 9 Nov 1998 13:43:06 +0100 (MET)
From: mfontana@komodo.ing.unico.it (mauro fontana)
Subject: Re: <none>

On Mon, 9 Nov 1998, mauro fontana wrote:

> It quite simple as bla is just a string. You can simply use StrLen(bla) to
> know its size:
>
> len := StrLen(bla)

Opps!!! It is len := StrLen(bla.bla) 8)

M&F

@endnode

@node ID11_2 "<none> (ID11_2)"
Date: Mon, 9 Nov 1998 04:46:05 -0800 (PST)
From: digitaldave98@yahoo.com (David Arbuthnot)
Subject: Re: <none>

- ---mauro fontana <mfontana@komodo.ing.unico.it> wrote:
>
> I had problem with this HTML mail, so sorry if it does not look
right for
> you, but it didn't fo mee too.
>
>      The above works but i know for a fact the data is not always
>      going to be 6 bytes long for example
>      if bla.bla:='blablabla' the output to file would still be
"blabla"
>
>      Help if possible and please send some examples otherwise i will
>      check in to a mental asylum !!!!!!!!
>
> It quite simple as bla is just a string. You can simply use
StrLen(bla) to
> know its size:
>
> len := StrLen(bla)
>
> and len is going to hold its length depending on how defined it.
>
>
> (2). Once i have written some binary data to a file how can i
>      figure out what the data is supposed to be i know that i
>      can use "seek" but dont know how to use the function ???
>
>      BTW how do i get the data once seek has found it ???
>
> I have not understood here. You write binary data to a file and then
you
> try to get them back again?
> 1) You can use your on copy of the data not those in the file.
> 2) If you want to verify the data you wrote then I would not use
Seek() as
> not all devices are able to handle a backward seek (pipe for
example). If
> you are going to verify the written data only at the end of the
file, that
> is when you have written all the binary data, it is much simpler to
> reload the complete file again once you have closed it.
>
> Can you give more info?
>
> M&F
>
> P.S. Please don't use HTML format in your e-mail. Some of us are still
> using old programs that are not able to handle it. It is quite
useless to
> have HTML code in the mail, so, please, don't use it. I had to do some
> manual formatting to this mail. It is quite annoying and not a good
thing
> one wants to do for every e-mail.
>
>
>
Sorry About That I must have clicked on the use HTML function anyway
what i am trying to do is create a prefs object for an program i wrote
about two days ago and i want to save the file as a binary as it
contains data such as passwords and things that need to be kept secret
to the more "explorative amiga user" so i need to write the data which
may not be a string it could maybe be some hex value or the like then
i need to read it back each time the program is loaded

thanks for the help and sorry about the html thing again
==
< Digital Dave 98 >

(Or For those of you that read in Hex)

$60326873717384657632686586693257563262

E + MUI = Easier GUI coding
_________________________________________________________
DO YOU YAHOO!?
Get your free @yahoo.com address at http://mail.yahoo.com

@endnode

@node ID11_3 "<none> (ID11_3)"
Date: Mon, 9 Nov 1998 14:36:22 +0100 (MET)
From: mfontana@komodo.ing.unico.it (mauro fontana)
Subject: Re: <none>

> Sorry About That I must have clicked on the use HTML function anyway
> what i am trying to do is create a prefs object for an program i wrote
> about two days ago and i want to save the file as a binary as it
> contains data such as passwords and things that need to be kept secret
> to the more "explorative amiga user" so i need to write the data which
> may not be a string it could maybe be some hex value or the like then
> i need to read it back each time the program is loaded
>
> thanks for the help and sorry about the html thing again

Ok. I have understood now.
The simpler thing you can do is having a buffer where you put the data you
need and then save it at once as a file. This may look this way.

OBJECT prefs
  buffer:LONG -> It is a PTR TO CHAR
  size:LONG   -> Keeps the allocated size of the buffer
ENDOBJECT

I think you cannot do OOP, so I'll use normal AmigaE code.

CONST BUF_SIZE=$100  -> Can be anything you need here

PROC main()
  DEF p=0:PTR TO prefs, pos=0

  NEW p
  p.buffer := New(BUF_SIZE)
  p.size   := BUF_SIZE

  /* Now you fill the buffer with the data of your prefs. You can use
  CopyMem() for this purpose and a varable that keeps the position in the
  buffer that has already been used. */

  CopyMem('Preference', p.buffer, 10)
  pos := 10
  p.buffer[pos++] := 100
  p.buffer[pos++] := 25
  ...
  /* You insert binary data this way. Note: I have declared buffer as a
  LONG (PTR TO CHAR) so only nunber from 0 to 256 have meaning here. If
  you declare it as a PTR TO INT o PTR TO LONG you can write 2 or 4 bytes
  at time and number can be in the range, respectively, -2^15 - 2^15 or
  -2^31 - 2^31 (don't want to do the calculation now 8)). At the same
  time pos must be declared as a PTR TO INT or PTR TO LONG so that the ++
  operator is going to add 2 or 4 at pos.
  Once you have written your buffer, you just save it with any write
  function (Write() or Fwrite()) passing the BUF_SIZE as the size of the
  buffer you are going to save.

ENDPROC

This is just one mode on how to solve this problem. Here another simpler
one

PROC main()
  DEF p=0:PTR TO prefs, buf=0:PTR TO CHAR -> This must be the same as
                                          -> p.buffer

  NEW p
  p.buffer := New(BUF_SIZE)
  p.size   := BUF_SIZE

  /* Now fill the buffer but keep a copy of the starting address of the
  buffer in buf */

  buf := p.buffer

  buf[]++ := 10
  buf[]++ := 20
  buf[]++ := 30
  ....

  CopyMem([40, 50, 60, 70, 80]:PTR TO CHAR, buf, 5)
  buf := buf+5 -> This is 5 as they were CHAR. For INT this would have
               -> been 10 and for LONG it would have been 20
  ....

  buf[]++ := 90

  /* Use any way to fill the buffer with the data you want. Remember to
  use the correct PTR TO declarations for all pointers you are going to
  use for buffer, that must be equal to that of p.buffer. */

  /* Now save it. I can remember the right parameters for the open and
  write functions but you can find them on the autodocs. */

  fh := Open(myfile, NEWFILE)
  Write(fh, p.buffer, p.size)
  Close(fh)

ENDPROC

Now you should have a file whose name as contained in myfile BUF_SIZE
large. You can also keep the actual size of the used buffer in p.size
instead f its total size, so that you are going to save only that part of
the buffer that you have used.

This may be look a bit confused and probably it is. If you have some
problem feel free to write me. Maybe some one else on this list knows a
better way to do this things (expecialy a good way to fill the buffer in a
easy way).

M&F

@endnode



@node ID12_0 "-none- (ID12_0)"
From: frosetti@hotmail.com ("Dennis Andersson")
Subject: Re: -none-
Date: Mon, 09 Nov 1998 05:52:53 PST

>
>Sorry About That I must have clicked on the use HTML function anyway
>what i am trying to do is create a prefs object for an program i wrote
>about two days ago and i want to save the file as a binary as it
>contains data such as passwords and things that need to be kept secret
>to the more "explorative amiga user" so i need to write the data which
>may not be a string it could maybe be some hex value or the like then
>i need to read it back each time the program is loaded
>

If you really want to keep it secret you should use crypto.
RC4 is a fast and safe algorithm. Mail me if you want the RC4
source.

Dennis

______________________________________________________
Get Your Private, Free Email at http://www.hotmail.com
@endnode



@node ID13_0 "UUEncode/Decode Src (ID13_0)"
Date: Mon, 9 Nov 1998 16:51:44 +0100 (CET)
From: szczepan@student.man.bialystok.pl ("Marcin Juszkiewicz
(Szczepan/BlaBla)")
Subject: UUEncode/Decode Src

 Hi

  Is anyone has E Source of UU Encode/Decode programs ? I need uuencode
procedure for my program. Now I'm using external GGuucode but I want to
have it all in one proggy.

- ------
 Marcin Juszkiewicz (Szczepan/BlaBla)   *Team Amiga*
 szczepan@infeco.pb.bialystok.pl http://student.man.bialystok.pl/szczepan/
 A1200 BlizzIv 2+8MB RAM 425MB HDD x8 CD
 Author of MultiView for OS 2.0+ -> Aminet:util/sys/2b_mv_os2_x.lha

@endnode



@node ID14_0 "Problems with c->e converting (ID14_0)"
From: tommy@pitea.mail.telia.com (Tommy Lindgren)
Date: Mon, 09 Nov 1998 18:41:51 +0200
Subject: Problems with c->e converting

Hi!

You might have noticed that a library called "mmu.library" has
been uploaded to Aminet. However, I did and downloaded it, but
just to discover that no E modules were included. "Shit" I =

thought and tried to convert the pragma file with pragma2module.
But p2m failed (the output file was only 4 bytes !). So now
I try to convert all includes to modules by hand. At the moment =

I have problems with the following piece of code:

struct MappingNode {
        =

        ...
        ...

        union {
                void    *map_UserData;  /* your data if this is invalid o=
r swapped */
                void    *map_Page;      /* destination page if bundled */=

                LONG    *map_Descriptor;/* pointer to a descriptor, alter=
natively */
                LONG    map_Delta;      /* added to the logical address i=
f remapped */
        }                map_un;
};

What is the "union" part equal to in E? And another problem (which =

already has been answered in this m/l, sorry): =

What is "1<<14L" equal to?

- -- =

Tommy Lindgren - tomyl@telia.com
http://w1.911.telia.com/~u91103938              =

ICQ UIN: 13659426                           =

Murphy's Laws of Combat - No. 8
Teamwork is essential, it gives them someone else to shoot at.

@endnode

@node ID14_1 "Problems with c->e converting (ID14_1)"
Date: Tue, 10 Nov 1998 17:50:59 +0000 (BST)
From: sac@csd.abdn.ac.uk (Stuart Caie)
Subject: Re: Problems with c->e converting

On Mon, 9 Nov 1998, Tommy Lindgren wrote:

=>        union {
=>                void    *map_UserData;  /* your data if this is invalid or
swapped */
=>                void    *map_Page;      /* destination page if bundled */
=>                LONG    *map_Descriptor;/* pointer to a descriptor,
alternatively */
=>                LONG    map_Delta;      /* added to the logical address if
remapped */
=>        }                map_un;
=>};
=>
=>
=>What is the "union" part equal to in E?

The union says that every definition in it shares the same space in the
datastructure. Therefore, the overall size of the union part is equal to the
biggest single item, not the addition of the size of all the items as is
normal.

So for example:

with union (b & c in same space)|       without union (b & c seperate)
                                |
struct blah {                   |       struct blah {
  LONG a;                       |         LONG a;
  union { WORD b; LONG c; } foo;|         WORD b; LONG c;
  LONG d;                       |         LONG d;
};                              |       };
                                |
member  offset  size            |       member  offset  size
a       0       4               |       a       0       4
b       4       2               |       b       4       2
c       4       4               |       c       6       4
d       8       4               |       d       10      4
        overall 12              |               overall 14

E does not (and probably never will) allow you useful things like unions.

So how do we fix this into E?

We can either hack into the object module after creating it (as they did
with the Amiga includes for E), or we can put only one of the union members
into the structure and make #defines for all the other members so they mean
the same thing.

So, from your example:

OPT PREPROCESS
OPT MODULE
OPT EXPORT -> you have to export every single thing just to get one #define
           -> exported

#define map_userdata   map_page
#define map_descriptor map_page
#define map_delta      map_page

OBJECT blah
 ...
  map_page
 ...
ENDOBJECT

Unfortunately, this means all the unioned identifiers have to have the same
type. What a great language feature!

=>What is "1<<14L" equal to?

Shl(1,14)  or, if we defined the below, it would be the const FOURTEEN.

SET ZERO, ONE, TWO, THREE, FOUR, FIVE, SIX, SEVEN, EIGHT, NINE, TEN, ELEVEN,
TWELVE, THIRTEEN, FOURTEEN

Another great thing! E relies on function calls to do basic math, and
therefore
prevents you from using particular kinds of calculated constant values.
(Mostly numbers with shifts and negations.) Also SET does not allow you to
write 'SET FOURTEEN=14' like ENUM allows you.

Stuart

@endnode

@node ID14_2 "Problems with c->e converting (ID14_2)"
From: jason@fsel.com ("Jason Hulance")
Subject: RE: Problems with c->e converting
Date: Wed, 11 Nov 1998 08:54:11 -0000

Tommy Lindgren wrote:

> What is the "union" part equal to in E?

Unions are for when the same bit of memory might be used for several
different structures.  You normally have something outside the union
that dictates what shape the union data will have, so it can be
accessed safely.

Unions are a silly complication in a language.  If your data may have
different shapes then it ought to be described by separate types.
That's what I'd recommend you'd do normally.

But, for converting someone else's C datatype, you really want to keep
the same single type (so that translating C code that uses it is a
little easier).  Most importantly, the AmigaOS system modules needed to
do this.  The E module format does support unions (to a degree, and
probably by accident), but there's no way of generating them.  (The
system modules were "hacked", with Wouter's blessing...)

For the particular union you quoted, the different possibilities are
all single 32-bit quantities (either pointers or LONG), so you could
just pick one for the OBJECT and #define the other element names to
refer to that one.  That's about the least horrid thing you can do,
but it's still horrid.

> What is "1<<14L" equal to?

Shl(1,14)

Cheers!

- --
Your numbers are 50, 5, 4, 1, 2 and 2.  The target is 971.
The conundrum for today is "oeagapptr"
======================================================================
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

@endnode

@node ID14_3 "Problems with c->e converting (ID14_3)"
From: tommy@pitea.mail.telia.com (Tommy Lindgren)
Date: Sat, 14 Nov 1998 03:28:37 +0200
Subject: Re: Problems with c->e converting

Hello Stuart

Thanks for your answer!!!

On 10-Nov-98, you wrote:

[snip]

> Another great thing! E relies on function calls to do basic math, and t=
herefore
> prevents you from using particular kinds of calculated constant values.=

> (Mostly numbers with shifts and negations.) Also SET does not allow you=
 to
> write 'SET FOURTEEN=3D14' like ENUM allows you.

Hmm... ENUMs.. Is it possible to make the ENUM to count down?

Something like this:
  ENUM ZERO,MINUS_ONE,MINUS_TWO...

- -- =

Tommy Lindgren - tomyl@telia.com
http://w1.911.telia.com/~u91103938              =

ICQ UIN: 13659426                           =

Murphy's Law No. 32:
Build a system that even a fool can use, and only a fool will use.

@endnode

@node ID14_4 "Problems with c->e converting (ID14_4)"
From: tommy@pitea.mail.telia.com (Tommy Lindgren)
Date: Sat, 14 Nov 1998 03:28:55 +0200
Subject: Re: Problems with c->e converting

Hello Jason

Thanks for your answer!!!

On 11-Nov-98, you wrote:

[snip]

> But, for converting someone else's C datatype, you really want to keep
> the same single type (so that translating C code that uses it is a
> little easier).  Most importantly, the AmigaOS system modules needed to
> do this.  The E module format does support unions (to a degree, and
> probably by accident), but there's no way of generating them.  (The
> system modules were "hacked", with Wouter's blessing...)

How do I "hack" the module? (I guess that it has something to
do with a hex-editor :-)

- --
Tommy Lindgren - tomyl@telia.com
http://w1.911.telia.com/~u91103938
ICQ UIN: 13659426

Murphy's Law No. 32:
Build a system that even a fool can use, and only a fool will use.

@endnode

@node ID14_5 "Problems with c->e converting (ID14_5)"
Date: Sat, 14 Nov 1998 16:07:04 +0100 (MET)
From: szczepan@student.man.bialystok.pl ("Marcin Juszkiewicz
(Szczepan/BlaBla)")
Subject: Re: Problems with c->e converting

On Sat, 14 Nov 1998, Tommy Lindgren wrote:

- ->Hmm... ENUMs.. Is it possible to make the ENUM to count down?
- ->
- ->Something like this:
- ->  ENUM ZERO,MINUS_ONE,MINUS_TWO...

You can (?) use :

ENUM MINUS_TWO = -2,MINUS_ONE,ZERO,ONE

- ------
 Marcin Juszkiewicz (Szczepan/BlaBla)   *Team Amiga*
 szczepan@student.man.bialystok.pl http://student.man.bialystok.pl/szczepan/
 A1200 BlizzIv 2+8MB RAM 425MB HDD x8 CD
 Author of MultiView for OS 2.0+ -> Aminet:util/sys/2b_mv_os2_x.lha

@endnode

@node ID14_6 "Problems with c->e converting (ID14_6)"
From: tommy@pitea.mail.telia.com (Tommy Lindgren)
Date: Sun, 15 Nov 1998 16:09:12 +0200
Subject: Re: Problems with c->e converting

Hello Marcin

On 14-Nov-98, you wrote:

> On Sat, 14 Nov 1998, Tommy Lindgren wrote:

> ->Hmm... ENUMs.. Is it possible to make the ENUM to count down?
> ->
> ->Something like this:
> ->  ENUM ZERO,MINUS_ONE,MINUS_TWO...

> You can (?) use :

> ENUM MINUS_TWO = -2,MINUS_ONE,ZERO,ONE

That was clever! (or to simple for me 8-) /But/, it didn't work.
Actually I don't understand why the compiler doesn't allow it.

- --
Tommy Lindgren - tomyl@telia.com
http://w1.911.telia.com/~u91103938
ICQ UIN: 13659426

Murphy's Laws of Combat - No. 8
Teamwork is essential, it gives them someone else to shoot at.

@endnode

@node ID14_7 "Problems with c->e converting (ID14_7)"
From: jason@fsel.com ("Jason Hulance")
Subject: RE: Problems with c->e converting
Date: Mon, 16 Nov 1998 09:37:39 -0000

Tommy Lindgren quoted and wrote:

> > The E module format does support unions (to a degree, and
> > probably by accident), but there's no way of generating them.  (The
> > system modules were "hacked", with Wouter's blessing...)
>
> How do I "hack" the module? (I guess that it has something to
> do with a hex-editor :-)

Err... no, it's more complicated than that.  I can't actually tell you
how to do it.  Quite reasonably, Wouter wants to keep control of the
module format, which he can't do if he releases the format and allows
people to write millions of tools that depend on it.  So, if you really,
really want to do something like this, ask Wouter.

Cheers!

- --
Your numbers are 5, 5, 7, 7, 8 and 1.  The target is 917.
The conundrum for today is "umimtluat"
======================================================================
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

@endnode



@node ID15_0 "GACT_IMMEDIATE buttons in EasyGUI? (ID15_0)"
From: tommy@pitea.mail.telia.com (Tommy Lindgren)
Date: Mon, 09 Nov 1998 18:42:07 +0200
Subject: GACT_IMMEDIATE buttons in EasyGUI?

Hi!

I need buttons with the GACT_IMMEDIATE gadget activate flag. Is
this possible to get with EasyGUI without write a new plugin?

- --
Tommy Lindgren - tomyl@telia.com
http://w1.911.telia.com/~u91103938
ICQ UIN: 13659426

Happiness can't buy money.

@endnode



@node ID16_0 "Lacking features (was Problems with c->e converting) (ID16_0)"
Date: Wed, 11 Nov 1998 09:31:16 +0100 (MET)
From: mfontana@komodo.ing.unico.it (mauro fontana)
Subject: Lacking features (was Problems with c->e converting)

> E does not (and probably never will) allow you useful things like unions.
[...]
> Unfortunately, this means all the unioned identifiers have to have the
same
> type. What a great language feature!
[...]
> Another great thing! E relies on function calls to do basic math, and
therefore
> prevents you from using particular kinds of calculated constant values.
> (Mostly numbers with shifts and negations.) Also SET does not allow you to
> write 'SET FOURTEEN=14' like ENUM allows you.

Yes, you are right. AmigaE has some missing features that may be somewhat
useful. But surely it is not the missing of unions and << or >> operators.
More generally, it would be better having the chance to declare constants
values using any mathematic operator or function call.
I don't see the importance of unions. You can surely write a program that
is able to not use them and have the same features and not different
overhead for that.

AmigaE is as good as we know it because it has a much simpler syntax than
C or C++. If you really want all C/C++ features you can use them, provided
you can stand C/C++ horrible syntax and precedence conventions.

One of the most important thing that I think E lacks is a more
sophisticated implementation of OOP. We cannot define private methods, and
also private objects have severe limitations on how they can be defined.
We cannot have polimorphism (or that features that lets you call the same
method in different ways to perform different task) and, probably more
important, we cannot do any over definition (sorry I just have a lapsus
and cannot remember the right term here) of operators for different
classes.

I don't know if they are ever going to be added to the language, or if the
language will be ever update sometime to support other features like
direct FPU support, or 20/040/060 optimization and PPC assembly support.

The fact that it is a simple language that is more powerful and simple
than C but worse (even though always much simpler) than C++ makes it a
very good language IMHO. Otheriwise I would have already switched to SAS/C
that is now sold for $10.

M&F

@endnode

@node ID16_1 "Lacking features (was Problems with c->e converting) (ID16_1)"
Date: Thu, 12 Nov 1998 16:52:42 +0100
From: verhaegs@imec.be (Staf Verhaegen)
Subject: Re: Lacking features (was Problems with c->e converting)

mauro fontana wrote:
> One of the most important thing that I think E lacks is a more
> sophisticated implementation of OOP. We cannot define private methods, and
> also private objects have severe limitations on how they can be defined.
> We cannot have polimorphism (or that features that lets you call the same
> method in different ways to perform different task) and, probably more
> important, we cannot do any over definition (sorry I just have a lapsus
> and cannot remember the right term here) of operators for different
> classes.

These 'missing' features are caused because E is basically a typeless
language.
So the compiler doesn't know the type of the arguments for a function so it
can
only overload the meaning of a member by the number of arguments given to
that
function. The same goes for operators: the compiler doesn't know the type of
the
left and the right side argument of an operator so it cannot overload the
meaning of an operator.

>
> M&F

greets,
Staf.

+----------------------------------------+-----------------------------+
|Staf Verhaegen (staf.verhaegen@imec.be) |ADRESS: IMEC vzw. - ASP/TCAD |
|tel: 016/ 281 238                       |        Kapeldreef 75        |
|fax: 016/ 281 214                       |        3001 Leuven (Belgium)|
+----------------------------------------+-----------------------------+
 For every tool there are at least 2 uses: the one it was designed for
                 and the other for which it wasn't.
@endnode

@node ID16_2 "Lacking features (was Problems with c->e converting) (ID16_2)"
Date: Fri, 13 Nov 1998 16:18:27 +0100 (MET)
From: mfontana@komodo.ing.unico.it (mauro fontana)
Subject: Re: Lacking features (was Problems with c->e converting)

On Thu, 12 Nov 1998, Staf Verhaegen wrote:

> mauro fontana wrote:
> > One of the most important thing that I think E lacks is a more
> > sophisticated implementation of OOP. We cannot define private methods,
and
> > also private objects have severe limitations on how they can be defined.
> > We cannot have polimorphism (or that features that lets you call the
same
> > method in different ways to perform different task) and, probably more
> > important, we cannot do any over definition (sorry I just have a lapsus
> > and cannot remember the right term here) of operators for different
> > classes.
>
> These 'missing' features are caused because E is basically a typeless
language.
> So the compiler doesn't know the type of the arguments for a function so
it can
> only overload the meaning of a member by the number of arguments given to
that
> function. The same goes for operators: the compiler doesn't know the type
of the
> left and the right side argument of an operator so it cannot overload the
> meaning of an operator.

This may be right for operator overloading, but parameters in functions
can be defined as PTR to something, so I think something can be done.

The hiding features can still be improved a lot. I hope Wouter will upgade
AmigaE some day to support this and new features (like FPU and PPC direct
suport).

M&F

@endnode

@node ID16_3 "Lacking features (was Problems with c->e converting) (ID16_3)"
Date: Fri, 13 Nov 1998 12:10:17 -0500
From: max2@ordigraphe.com ("Maxim Olivier-Adlhoch")
Subject: Re: Lacking features (was Problems with c->e converting)

mauro fontana wrote:

> This may be right for operator overloading, but parameters in functions
> can be defined as PTR to something, so I think something can be done.
>
> The hiding features can still be improved a lot. I hope Wouter will upgade
> AmigaE some day to support this and new features (like FPU and PPC direct
> suport).

Isn't someone working on another E compiler...

And I have talked to wouter (face to face) this summer at Internatioanl
Amiga
and had asked him a question like that ... he had simply said that he did
not
oppose a port of AmigaE to Os 4.0-5.0...  ;)

I guess it depends on his avalable time or the search for a valid person
which
would handle such a task...

- -MAxim

- --
- ----------------------
Maxim Olivier-Adlhoch
- ----------------------
max2@ordigraphe.com
- ----------------------
Are you a programer... Then Visit STEEL(c) Web Site  before you're left
in the cold...
http://www.geocities.com/SiliconValley/Network/7002/steel_welcome.html
@endnode



@node ID17_0 "Problems with c--e converting (ID17_0)"
From: frosetti@hotmail.com ("Dennis Andersson")
Subject: Re: Problems with c--e converting
Date: Wed, 11 Nov 1998 02:31:41 PST

>
>=>What is "1<<14L" equal to?
>
>Shl(1,14)  or, if we defined the below, it would be the const FOURTEEN.
>
>SET ZERO, ONE, TWO, THREE, FOUR, FIVE, SIX, SEVEN, EIGHT, NINE, TEN,
ELEVEN,
>TWELVE, THIRTEEN, FOURTEEN
>

Did you mean that Shl(1,14)=14, coz' I get 16384.

Happy coding!
Dennis

______________________________________________________
Get Your Private, Free Email at http://www.hotmail.com
@endnode

@node ID17_1 "Problems with c--e converting (ID17_1)"
Date: Wed, 11 Nov 1998 10:36:39 +0000 (BST)
From: sac@csd.abdn.ac.uk (Stuart Caie)
Subject: Re: Problems with c--e converting

On Wed, 11 Nov 1998, Dennis Andersson wrote:

=>Did you mean that Shl(1,14)=14, coz' I get 16384.
No, I mean that defining SET ZERO, ONE,.... FOURTEEN gives FOURTEEN =
Shl(1,14)

Stuart

@endnode



@node ID18_0 "MUI-BodyChunk Objects (ID18_0)"
Date: Wed, 11 Nov 1998 02:56:29 -0800 (PST)
From: digitaldave98@yahoo.com (David Arbuthnot)
Subject: MUI-BodyChunk Objects

Hi Everyone

What on earth are MUI-BodyChunk Objects for as all i seem to be able
to do is put the image on the screen
i use bigbrush2e to create the images but could i use them buttons and
the like ????


==
< Digital Dave 98 >

(Or For those of you that read in Hex)

$60326873717384657632686586693257563262

E + MUI = Easier GUI coding
_________________________________________________________
DO YOU YAHOO!?
Get your free @yahoo.com address at http://mail.yahoo.com

@endnode

@node ID18_1 "MUI-BodyChunk Objects (ID18_1)"
Date: Wed, 11 Nov 1998 13:35:50 +0100
From: ss37@irz301.inf.tu-dresden.de (Sven Steiniger)
Subject: Re: MUI-BodyChunk Objects

Just remember:  Buttons are normal TextObjects with
some tags of Area-class set. Take  a  look at
libraries/mui.e, especially  on the macros  for
creating buttons  (KeyButton() etc.).  You could
replace the TextObject by BodychunkObject  and add
the related datas to get your image-button.

- --
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.
(..."Happiness is not a state; it's a process.", Ali Graham)
@endnode



@node ID19_0 "3D scrolling gadget knob (ID19_0)"
Date: Wed, 11 Nov 1998 13:53:56 +0100 (MET)
From: mfontana@komodo.ing.unico.it (mauro fontana)
Subject: 3D scrolling gadget knob

I have tried all ways to obtain a 3D knob for a scrolling BOOPSI gadget
placed into a window. But all I obtain is a flat knob.  The only way to
have a 3D knob was to put the scrolling gadget into the border or adding a
frameiclass as the image of the BOOSPI scrolling gadget. This last way,
however, the knob is no more autosizing, but it has a fixed size. It is no
more proportional to the values of top, visible and maximum inserted in
the scrolling gadget.

I have used all the ways I know to obtain a 3D knob. I have set the
NEWLOOK tag and played with the dri pens but nothing useful has happened.

Any one can help me?

Thanks

M&F

@endnode



@node ID20_0 "Debugging help for ARexxComm needed! (ID20_0)"
From: Chris.S.Handley@btinternet.com ("Chris S Handley")
Date: 11 Nov 98 23:47:02 +0000
Subject: Debugging help for ARexxComm needed!

Very soon after my posting a while ago about my having finished
ARexxComm (a module to make Rexx ports dead easy), to my extreme
embarrasement I discovered that it could freeze my Miggy :-(

The bug has been introduced after I did a major rework of the code to
make it easier, cleaner, etc - and despite hours of looking at the
code I cannot guess why it freezes.

Enforcer does not work on my miggy, but I just tried CyberGuard & this
did not show anything :( .

As I do not fully understand the subtleties of Rexx comm ports (I was
reworking someone else's 'poor' code), I am a bit stuck since I think
the problem may be related to that, rather than a simple programming
error.

If anyone who knows about using Rexx comm ports could look at my code
for anything obviously wrong I would be VERY pleased - and they would
get FULL credit in the docs whenever I get round to uploading this
thing to the Aminet.  Fraid I can't think of any better incentive!

Many thanks in advance to anyone offering their help. :-)

Please email me DIRECT so as not to fill-up the list even more!

PS.I am writing an OOP string class to make string handling bullet
proof (which is going brilliantly so far).  Has this been done before?

- --
Chris S Handley, BEng(Hons) - an overworked PowerAmiga nut & Anime fan
EMAIL:  Chris.S.Handley@btinternet.com
- ----------------------------------------------------------------------
One proud owner of a Risc 240MHz PowerPC 603e, 66MHz bus, 32Mb 60ns
RAM, DMA Fast SCSI-II (10Mb/s), Gbs of HD, SyQuest 230Mb removable
drive, CD drive, Multi-Sync monitor...  all attached to an *AMIGA* :-)
@endnode



@node ID21_0 "UU encoding (ID21_0)"
Date: Fri, 13 Nov 1998 09:30:12 +0100
From: raptor@cs.tu-berlin.de (Gul Dukat)
Subject: UU encoding

Hi, I've got objects to do uu-encoding and base64 encoding.

   I will send them via this mailing-list next monday. Sorry,
   but I'm only connected to the internet via my university 8(
@endnode



@node ID22_0 "HELP HELP HELP (ID22_0)"
Date: Fri, 13 Nov 1998 09:18:04 -0500
From: max2@ordigraphe.com ("Maxim Olivier-Adlhoch")
Subject: HELP HELP HELP

I am trying to build a system where a directory contains any number
of Libraries.  When the application starts, it opens up each of these
libraies and then it can be using any one of them depending on the data
being processed.

  This is in essence a bit the same thing as the Devices or Datatypes
idea but applied differently.

  Yesterday I was implementing this and everything is fine until I try
to use one of the functions... in the library(s).  my idea was to set
the libbase to whatever library I had opened and then when calling up
the function it would call the function of that library.  but now its
crashing, exactly like if I had not opened the library before calling a
function...

All the libraries are supposed to have the Exact Same definition...

the use of these libraries is for a plugin system...

This question is a toughy and I guess not many people will have tried
this out but I 'm asking anyways... If you have a clue (even if you have
not tried it out) PLEASE give it to me...

- -Maxim

- --
- ----------------------
Maxim Olivier-Adlhoch
- ----------------------
max2@ordigraphe.com
- ----------------------
Are you a programer... Then Visit STEEL(c) Web Site  before you're left
in the cold...
http://www.geocities.com/SiliconValley/Network/7002/steel_welcome.html
@endnode

@node ID22_1 "HELP HELP HELP (ID22_1)"
Date: Fri, 13 Nov 1998 15:32:02 +0100 (MET)
From: mfontana@komodo.ing.unico.it (mauro fontana)
Subject: Re: HELP HELP HELP

> All the libraries are supposed to have the Exact Same definition...
>
> This question is a toughy and I guess not many people will have tried
> this out but I 'm asking anyways... If you have a clue (even if you have
> not tried it out) PLEASE give it to me...

Right. It is quite tough and I have never tried it. However the first
thing that comes to mind is: are all libraries referred with the same
libbase variable? Are you opening a library and then trying to open
another one wiht the same variable before closing the old one? That is are
you sure that OpenLibrary is going to set libbase the right way if a
library with the same name is already in memory?

Maybe I have not understood what you are trying to do (so trash all I have
said here). If so, may you give me more info?

M&F

@endnode

@node ID22_2 "HELP HELP HELP (ID22_2)"
Date: Fri, 13 Nov 1998 11:02:08 -0500
From: max2@ordigraphe.com ("Maxim Olivier-Adlhoch")
Subject: Re: HELP HELP HELP

mauro fontana wrote:
>
> > All the libraries are supposed to have the Exact Same definition...
> >
> > This question is a toughy and I guess not many people will have tried
> > this out but I 'm asking anyways... If you have a clue (even if you have
> > not tried it out) PLEASE give it to me...
>
> Right. It is quite tough and I have never tried it. However the first
> thing that comes to mind is: are all libraries referred with the same
> libbase variable? Are you opening a library and then trying to open
> another one wiht the same variable before closing the old one? That is are
> you sure that OpenLibrary is going to set libbase the right way if a
> library with the same name is already in memory?
>
> Maybe I have not understood what you are trying to do (so trash all I have
> said here). If so, may you give me more info?
>

actually the libraries have different names and libbase names... but I am
only
loading the MODULE for the Defs of the generic Library (which acts like a
Base
Class)  and then storing the opened lib base pointers returned by
OpenLibrary
into an Array.

when it comes time to use the various libraries (I simply set the LibBase of
the
Generic Library as anyone of those theoretically identical subclassed
libraries
and Call the Function.. But that does not work.

Shoudn't it?  I have defined all libs the same way, I am opening the libs
within
this task, and simply using my generic lib as a switcher for which library
to
use... since their definition is the same should it not simply jump to the
same
LVO, but with a different library?

If I create different libraries with the same libbase name and Just rename
the
library within AmigaDos afterwards,  OpenLibray() fails upon opening the
second
library.

interesting Note:  When the system crashes (I have MCP INstalled and it
interrupts the various Alerts) it tells me that an error was created by the
EXEC.Library !!! strange...

 It is the first I build a library within E, is it possible that It has
problems
accomplishing this task transparently?

- -Maxim

- --
- ----------------------
Maxim Olivier-Adlhoch
- ----------------------
max2@ordigraphe.com
- ----------------------
Are you a programer... Then Visit STEEL(c) Web Site  before you're left
in the cold...
http://www.geocities.com/SiliconValley/Network/7002/steel_welcome.html
@endnode

@node ID22_3 "HELP HELP HELP (ID22_3)"
From: narg@polbox.com (Piotr Gapinski)
Date: Fri, 13 Nov 1998 22:13:29 +0100
Subject: Re: HELP HELP HELP

Hello

Dnia 13-Lis-98, Maxim Olivier-Adlhoch napisa=EE(a):

>to use one of the functions... in the library(s).  my idea was to
>set the libbase to whatever library I had opened and then when
calling
>up the function it would call the function of that library.  but
now
>its crashing, exactly like if I had not opened the library before
>calling a function...
>All the libraries are supposed to have the Exact Same definition...

but if they are amigae libraries - you must specify right base for
library (library base may have static data); better implement this:
1. each library have one function that return initialized structure
like this
    OBJECT data OF ln
       hook:  hook
       base:  LONG
       bla:     LONG
    ENDOBJECT
2. internal (library) functions are avialable via
CallHookPkt(data.hook,a,b,c)
3. at start
   ...
   DEF data:PTR TO data,list:PTR TO mlh
   base:=3DOpenLibrary("my.library",0)
   MOVE.L base,A6
   JSR  -30(A6)
   MOVE.L D0,data
   data.base:=3Dbase
   AddTail(list,data)
   ...
4. at exit
   ...
   base:=3Ddata.base
   CloseLibrary(base)
   Remove(data)
   ...
   =

- -- =

 Piotr Gapinski
 mailto:narg@polbox.com | http://free.polbox.pl/n/narg

@endnode

@node ID22_4 "HELP HELP HELP (ID22_4)"
From: carl.drougge@2.sbbs.se (Carl Drougge)
Date: Fri, 13 Nov 1998 22:06:36 +0100
Subject: Re: HELP HELP HELP

Den 13-Nov-98, skrev Maxim Olivier-Adlhoch:

>I am trying to build a system where a directory contains any number
>of Libraries.  When the application starts, it opens up each of these
>libraies and then it can be using any one of them depending on the data
>being processed.

>  This is in essence a bit the same thing as the Devices or Datatypes
>idea but applied differently.

>  Yesterday I was implementing this and everything is fine until I try
>to use one of the functions... in the library(s).  my idea was to set
>the libbase to whatever library I had opened and then when calling up
>the function it would call the function of that library.  but now its
>crashing, exactly like if I had not opened the library before calling a
>function...

>All the libraries are supposed to have the Exact Same definition...

>the use of these libraries is for a plugin system...

>This question is a toughy and I guess not many people will have tried
>this out but I 'm asking anyways... If you have a clue (even if you have
>not tried it out) PLEASE give it to me...

I have written a BBS-system where almost everything is in a different
library.
I think I ended up doing something like this:
   MOVEA.L libbase,A6
   MOVE.L  arguments,D0
   JSR     -30(A6)
   MOVE.L  D0,result_var

But this was mostly because the same code could be called by several tasks
simultaniously, I think just using the librarybase variabel normally works..
Maybe you got the name of it wrong somehow? But try that if you think
everything else is rigth, it migth work. =)

@endnode

@node ID22_5 "HELP HELP HELP (ID22_5)"
Date: Fri, 13 Nov 1998 17:39:18 -0500
From: max2@ordigraphe.com ("Maxim Olivier-Adlhoch")
Subject: Re: HELP HELP HELP

Hi Carl,

You wrote:
> I have written a BBS-system where almost everything is in a different
library.
> I think I ended up doing something like this:
>    MOVEA.L libbase,A6
>    MOVE.L  arguments,D0
>    JSR     -30(A6)
>    MOVE.L  D0,result_var
>
> But this was mostly because the same code could be called by several tasks
> simultaniously, I think just using the librarybase variabel normally
works..
> Maybe you got the name of it wrong somehow? But try that if you think
> everything else is rigth, it migth work. =)
What are the following offsets for each function call?
- -15
- -45
- -60
...
???

look at the following code: its syntax will be wrong, but just consider the
alogrythm...
remember that both library Templates are the same...

...
DEF mylib_base  /* let's say that this is the actual
                ** libbase name of the generic lib.
                ** IT IS DEFINED in mylib_.m
                */
DEF lib_array[2}:PTR TO LONG

mylib_base := OpenLibrary('mylib_.library', 0)
lib_array[0] := mylib_base
mylib_base := OpenLibrary('mysecondlib_.library', 0) /* this library's
actual
                                                     ** lib base name is
                                                     ** mysecondlib_base */
lib_array[1] := mylib_base
DebugFunc('test')  /* we SHOULD be calling DebungFunc() from
                                 **  mysecondlib_.library */
mylib_base := lib_array[0]
DebugFunc('test')  /* we SHOULD be calling DebungFunc() from
                                 **  mylib_.library */
CloseLibrary(lib_array[0])
CloseLibrary(lib_array[1])
...

Can anyone tell me why this would not work... It is Theoretically the same
as the assembly sample shown above except that its being done in E syntax
no?

- -Maxim
- --
- ----------------------
Maxim Olivier-Adlhoch
- ----------------------
max2@ordigraphe.com
- ----------------------
Are you a programer... Then Visit STEEL(c) Web Site  before you're left
in the cold...
http://www.geocities.com/SiliconValley/Network/7002/steel_welcome.html
@endnode

@node ID22_6 "HELP HELP HELP (ID22_6)"
Date: Fri, 13 Nov 1998 17:49:11 -0500
From: max2@ordigraphe.com ("Maxim Olivier-Adlhoch")
Subject: Re: HELP HELP HELP

Piotr Gapinski wrote:
>
> Hello
>
> Dnia 13-Lis-98, Maxim Olivier-Adlhoch napisan(a):
>
> >to use one of the functions... in the library(s).  my idea was to
> >set the libbase to whatever library I had opened and then when
> calling
> >up the function it would call the function of that library.  but
> now
> >its crashing, exactly like if I had not opened the library before
> >calling a function...
> >All the libraries are supposed to have the Exact Same definition...
>
> but if they are amigae libraries - you must specify right base for
> library (library base may have static data); better implement this:
> 1. each library have one function that return initialized structure
> like this
>     OBJECT data OF ln
>        hook:  hook
>        base:  LONG
>        bla:     LONG
>     ENDOBJECT
> 2. internal (library) functions are avialable via
> CallHookPkt(data.hook,a,b,c)

VERY clever!  in other words, this function allocates an Instances
of your 'object' to use.

you do not even have to set the lib_Base before calling
your function because the hook is an ABSOLUTE pointer, RIGHT?

> 3. at start
>    ...
>    DEF data:PTR TO data,list:PTR TO mlh
>    base:=OpenLibrary("my.library",0)
>    MOVE.L base,A6
>    JSR  -30(A6)
>    MOVE.L D0,data
>    data.base:=base
>    AddTail(list,data)

I Imagine the FIRST function is the one returning the data... ;)

>    ...
> 4. at exit
>    ...
>    base:=data.base
>    CloseLibrary(base)
>    Remove(data)
>    ...

The only problem here is that this becomes quite a job to handle if
the object instance uses many different Methods, NO?

Altough I guess I can use the first function as an entrypoint into a
SELECT statement which then calls the function of the library I want...

- -Maxim

- --
- ----------------------
Maxim Olivier-Adlhoch
- ----------------------
max2@ordigraphe.com
- ----------------------
Are you a programer... Then Visit STEEL(c) Web Site  before you're left
in the cold...
http://www.geocities.com/SiliconValley/Network/7002/steel_welcome.html
@endnode

@node ID22_7 "HELP HELP HELP (ID22_7)"
From: narg@polbox.com (Piotr Gapinski)
Date: Sat, 14 Nov 1998 10:31:33 +0100
Subject: Re: HELP HELP HELP

Hello

Dnia 13-Lis-98, Maxim Olivier-Adlhoch napisa=EE(a):
>VERY clever!  in other words, this function allocates an Instances =

>of your 'object' to use.

Yes

>you do not even have to set the lib_Base before calling
>your function because the hook is an ABSOLUTE pointer, RIGHT?

Yes, 'hook' and 'data' are allocated by the library function so they
are diffrent for each library. You do not need to set up library
base before calling CallHookPkt() but you must preserve it, so at
exit of your program library could be closed.

>I Imagine the FIRST function is the one returning the data... ;)

Uhm, but this is only an example :)

>The only problem here is that this becomes quite a job to handle if

>the object instance uses many different Methods, NO?

Yes, this might be a problem but - I've created this for my program
(hard/misc/atc.lha) and it work ok (for me :). If yoou want source -
please download archive (source included).
AFAIK - the same method of calling functions is utilied in BOOPSI
system

please forgive me my poor English...
- -- =

 Piotr Gapinski
 mailto:narg@polbox.com | http://free.polbox.pl/n/narg

@endnode

@node ID22_8 "HELP HELP HELP (ID22_8)"
From: carl.drougge@2.sbbs.se (Carl Drougge)
Date: Sat, 14 Nov 1998 15:14:19 +0100
Subject: Re: HELP HELP HELP

Den 13-Nov-98, skrev Maxim Olivier-Adlhoch:

>What are the following offsets for each function call?
>-15
>-45
>-60
>...
>???

The first function is -30, the next -36, then -42, -48, -54, -60 and so on.

>look at the following code: its syntax will be wrong, but just consider the
>alogrythm...
>remember that both library Templates are the same...

>...
>DEF mylib_base  /* let's say that this is the actual
>                ** libbase name of the generic lib.
>                ** IT IS DEFINED in mylib_.m
>                */
>DEF lib_array[2}:PTR TO LONG

>mylib_base := OpenLibrary('mylib_.library', 0)
>lib_array[0] := mylib_base
>mylib_base := OpenLibrary('mysecondlib_.library', 0) /* this library's
actual
>                                                     ** lib base name is
>                                                     ** mysecondlib_base */
>lib_array[1] := mylib_base
>DebugFunc('test')  /* we SHOULD be calling DebungFunc() from
>                                 **  mysecondlib_.library */
>mylib_base := lib_array[0]
>DebugFunc('test')  /* we SHOULD be calling DebungFunc() from
>                                 **  mylib_.library */
>CloseLibrary(lib_array[0])
>CloseLibrary(lib_array[1])
>...

>Can anyone tell me why this would not work... It is Theoretically the same
>as the assembly sample shown above except that its being done in E syntax
no?

No. You have DEFed mylib_base, and it is local to your PROC. The actual
librarycall will use the variable globally defined by the module. So just
skip
the DEF mylib_base line and it is correct. Except of course you have to
errorcheck so you really succeded in opening the libs.

@endnode

@node ID22_9 "HELP HELP HELP (ID22_9)"
From: jason@fsel.com ("Jason Hulance")
Subject: RE: HELP HELP HELP
Date: Mon, 16 Nov 1998 09:37:40 -0000

Maxim Olivier-Adlhoch wrote:

> look at the following code: its syntax will be wrong, but just
> consider the alogrythm...
> remember that both library Templates are the same...
>
> ...
> DEF mylib_base  /* let's say that this is the actual
>                 ** libbase name of the generic lib.
>                 ** IT IS DEFINED in mylib_.m
>                 */
> DEF lib_array[2}:PTR TO LONG
>
> mylib_base := OpenLibrary('mylib_.library', 0)
> lib_array[0] := mylib_base
> mylib_base := OpenLibrary('mysecondlib_.library', 0)
> /* this library's actual lib base name is mysecondlib_base */
>
> lib_array[1] := mylib_base
> DebugFunc('test')
> /* we SHOULD be calling DebungFunc() from mysecondlib_.library */
>
> mylib_base := lib_array[0]
> DebugFunc('test')
> /* we SHOULD be calling DebungFunc() from mylib_.library */
>
> CloseLibrary(lib_array[0])
> CloseLibrary(lib_array[1])
> ...
>
> Can anyone tell me why this would not work... It is Theoretically
> the same as the assembly sample shown above except that its being done in
> E syntax no?

If the library structure are truly identical (look at the .fd files?) then
I can imagine that the problem lies in the library base variables.  I
suspect that the code in the library uses its library base variable to
call its own functions, and of course you've not set up mysecondlib_base.
You could try setting all of the library base variables to the opened
library.  This ought to prove the point, or refute it.

If this is the problem, then your program needs to consider the base
variable as part of the identification of a library (where you use only
the string for the library name at the moment).  When you go to open the
specific library you want (based on specific string), that code should
also set the specific library base variable.

Cheers!

- --
Your numbers are 5, 5, 7, 7, 8 and 1.  The target is 917.
The conundrum for today is "umimtluat"
======================================================================
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

@endnode

@node ID22_10 "HELP HELP HELP (ID22_10)"
Date: Mon, 16 Nov 1998 09:17:09 -0500
From: max2@ordigraphe.com ("Maxim Olivier-Adlhoch")
Subject: Re: HELP HELP HELP

Carl Drougge wrote:

> No. You have DEFed mylib_base, and it is local to your PROC. The actual
> librarycall will use the variable globally defined by the module. So just
skip
> the DEF mylib_base line and it is correct. Except of course you have to
> errorcheck so you really succeded in opening the libs.

sorry I should have noted that It was defined in the Module... I knew about
tht
one..

but thanks,

I have now erased my application code, redone it and also taken care that
all
libraries were at the good version and now everything is working smoothly
with a
more advanced system similar to the above...

thanks for your help, ALL of you.

- -Maxim

- --
- ----------------------
Maxim Olivier-Adlhoch
- ----------------------
max2@ordigraphe.com
- ----------------------
Are you a programer... Then Visit STEEL(c) Web Site  before you're left
in the cold...
http://www.geocities.com/SiliconValley/Network/7002/steel_welcome.html
@endnode

@node ID22_11 "HELP HELP HELP (ID22_11)"
From: carl.drougge@2.sbbs.se (Carl Drougge)
Date: Mon, 16 Nov 1998 21:11:35 +0100
Subject: RE: HELP HELP HELP

Den 16-Nov-98, skrev Jason Hulance:

>If the library structure are truly identical (look at the .fd files?) then
>I can imagine that the problem lies in the library base variables.  I
>suspect that the code in the library uses its library base variable to
>call its own functions, and of course you've not set up mysecondlib_base.
>You could try setting all of the library base variables to the opened
>library.  This ought to prove the point, or refute it.

>If this is the problem, then your program needs to consider the base
>variable as part of the identification of a library (where you use only
>the string for the library name at the moment).  When you go to open the
>specific library you want (based on specific string), that code should
>also set the specific library base variable.

No, when E calls a library, it will allways but the #?base in A6, as is also
the rule that you must. Most libraries rely on this. *No* library knows
about
E's global variables, so where it went from to A6 is not important.

@endnode

@node ID22_12 "HELP HELP HELP (ID22_12)"
From: jason@fsel.com ("Jason Hulance")
Subject: RE: HELP HELP HELP
Date: Tue, 17 Nov 1998 09:00:43 -0000

Carl Drougge wrote:

> No, when E calls a library, it will allways but the #?base in A6,
> as is also the rule that you must. Most libraries rely on this. *No*
> library knows about E's global variables, so where it went from to A6
> is not important.

Ah, yes, you're right.  Silly me.  What's Maxim's problem, then?

Cheers!

- --
Your numbers are 3, 3, 10, 5, 4 and 5.  The target is 534.
The conundrum for today is "tnbaotmca"
======================================================================
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

@endnode



@node ID23_0 "(no subject) (ID23_0)"
From: dave@shaye.demon.co.uk ("Dave Denton")
Date: 13 Nov 98 21:52:10 +0000
Subject: (no subject)

HELP

I am trying to create a progrma that acts on a window activation and I
can't seem to get the following piece of code to work.

SELECT msgtype
  CASE CXM_IEVENT
    IF ievent.class=IECLASS_RAWKEY
      buff:=New(100)
      num:=MapRawKey(ievent,buff,100,0)
      IF num=1
        Write('key:=\s\n',buff)            -> Works
      ENDIF
    IF ievent.class=IECLASS_CHANGEWINDOW
      WriteF('IECLASS_CHANGEWINDOW\n')     -> does'nt
    ENDIF
    IF ievent.class=IECLASS_INACTIVEWINDOW
      WriteF('IECLASS_INACTIVEWINDOW\n')    -> does'nt
    ENDIF
    IF ievent.class=IECLASS_ACTIVEWINDOW
      WriteF('IECLASS_ACTIVEWINDOW\n')      -> does'nt
    ENDIF
    IF ievent.class=IECLASS_CLOSEWINDOW
      WriteF('IECLASS_CLOSEWINDOW\n')       -> does'nt
    ENDIF
    IF ievent.code=IECODE_MBUTTON
      WriteF('Middle Mouse\n')              -> Works
    ENDIF

The code is not notifying me when a window is activated. Can anyone help?

This is my first request for help using this list so I am not sure if I
have to include my email address so here it is anyway.

Kind regards

Dave Denton.

dave@shaye.demon.co.uk

@endnode



@node ID24_0 "IECLASS_ACTIVEWINDOW (ID24_0)"
From: dave@shaye.demon.co.uk ("Dave Denton")
Date: 13 Nov 98 22:20:19 +0000
Subject: IECLASS_ACTIVEWINDOW

HELP

I am trying to create a progrma that acts on a window activation and I
can't seem to get the following piece of code to work.

SELECT msgtype
  CASE CXM_IEVENT
    IF ievent.class=IECLASS_RAWKEY
      buff:=New(100)
      num:=MapRawKey(ievent,buff,100,0)
      IF num=1
        Write('key:=\s\n',buff)            -> Works
      ENDIF
    IF ievent.class=IECLASS_CHANGEWINDOW
      WriteF('IECLASS_CHANGEWINDOW\n')     -> does'nt
    ENDIF
    IF ievent.class=IECLASS_INACTIVEWINDOW
      WriteF('IECLASS_INACTIVEWINDOW\n')    -> does'nt
    ENDIF
    IF ievent.class=IECLASS_ACTIVEWINDOW
      WriteF('IECLASS_ACTIVEWINDOW\n')      -> does'nt
    ENDIF
    IF ievent.class=IECLASS_CLOSEWINDOW
      WriteF('IECLASS_CLOSEWINDOW\n')       -> does'nt
    ENDIF
    IF ievent.code=IECODE_MBUTTON
      WriteF('Middle Mouse\n')              -> Works
    ENDIF

The code is not notifying me when a window is activated. Can anyone help?

This is my first request for help using this list so I am not sure if I
have to include my email address so here it is anyway.

Kind regards

Dave Denton.

dave@shaye.demon.co.uk

@endnode

@node ID24_1 "IECLASS_ACTIVEWINDOW (ID24_1)"
Date: 13 Nov 98 22:49:40 -0500
From: victord@netrover.com ("Victor Ducedre")
Subject: Re: IECLASS_ACTIVEWINDOW

>HELP

>I am trying to create a progrma that acts on a window activation and I
>can't seem to get the following piece of code to work.

>SELECT msgtype
>  CASE CXM_IEVENT
>    IF ievent.class=IECLASS_RAWKEY
>      buff:=New(100)
>      num:=MapRawKey(ievent,buff,100,0)
>      IF num=1
>        Write('key:=\s\n',buff)            -> Works
>      ENDIF
     ENDIF                     <- you're missing one

>    IF ievent.class=IECLASS_CHANGEWINDOW
>      WriteF('IECLASS_CHANGEWINDOW\n')     -> does'nt
>    ENDIF
>    IF ievent.class=IECLASS_INACTIVEWINDOW
>      WriteF('IECLASS_INACTIVEWINDOW\n')    -> does'nt
>    ENDIF
>    IF ievent.class=IECLASS_ACTIVEWINDOW
>      WriteF('IECLASS_ACTIVEWINDOW\n')      -> does'nt
>    ENDIF
>    IF ievent.class=IECLASS_CLOSEWINDOW
>      WriteF('IECLASS_CLOSEWINDOW\n')       -> does'nt
>    ENDIF
>    IF ievent.code=IECODE_MBUTTON
>      WriteF('Middle Mouse\n')              -> Works
>    ENDIF

>The code is not notifying me when a window is activated. Can anyone help?

    The missing ENDIF should do it.  You might find using another
SELECT/CASE block easier, and then test ievent.code separately, or maybe
it's just me. :)

- --
Victor Ducedre          (victord@netrover.com)          Team AMIGA
Now proud keeper of the XPKatana spell (v 1.4 on its way).
"She wore a charcoal-coloured suit to dinner," Tom said ingraciatingly

@endnode

@node ID24_2 "IECLASS_ACTIVEWINDOW (ID24_2)"
From: carl.drougge@2.sbbs.se (Carl Drougge)
Date: Sat, 14 Nov 1998 15:09:22 +0100
Subject: Re: IECLASS_ACTIVEWINDOW

Den 13-Nov-98, skrev Dave Denton:

[Lots of code cut away here]

>The code is not notifying me when a window is activated. Can anyone help?

Well, I think you have cut some pieces out, otherwise the last one wouldn't
work either (the missing ENDIF, as mentioned in another reply).

The first thing that comes to mind is:
Have you told intuition that you want to be notified?
I don't remember how to do that off the top of my head (I hardly ever use
anything but stdio), but I'm sure you know. =)

@endnode

@node ID24_3 "IECLASS_ACTIVEWINDOW (ID24_3)"
From: dave@shaye.demon.co.uk ("Dave Denton")
Date: 19 Nov 98 19:47:20 +0000
Subject: Re: IECLASS_ACTIVEWINDOW

>
>
> Oh well, CX* just struck me: You're using commodities.library.. I have no
> experience of what that does or not. =)
> Here's a working example of doing it with input.device, attached.
>
> [...]

Thanks for the source it's exactly the kind of thing I was looking to
do. I just didn't realise it would be that complex since I have no
experience in assembler. :)

Thanks,  Dave Denton
@endnode



@node ID25_0 "EasyGUI: dynamic definition? (ID25_0)"
From: zokie@teseo.it (Francesco De Napoli)
Date: Sun, 15 Nov 1998 11:48:05 +0100
Subject: EasyGUI: dynamic definition?

Hello boys,

I need to do a dynamic definition of EasyGUI list, but I don't
know if it is possible, and how do it. Is there someone who has any
examples or knows how do it?

In the past, I define more than a gui and then change, on the fly, the
pointer, but now I must define a gui after reading an external prefs file,
and user may change it in random way.

Kind regards
- --
 "When do you want to reboot today?"

@endnode

@node ID25_1 "EasyGUI: dynamic definition? (ID25_1)"
From: carl.drougge@2.sbbs.se (Carl Drougge)
Date: Sun, 15 Nov 1998 15:00:22 +0100
Subject: Re: EasyGUI: dynamic definition?

Den 15-Nov-98, skrev Francesco De Napoli:

>Hello boys,

>I need to do a dynamic definition of EasyGUI list, but I don't
>know if it is possible, and how do it. Is there someone who has any
>examples or knows how do it?

>In the past, I define more than a gui and then change, on the fly, the
>pointer, but now I must define a gui after reading an external prefs file,
>and user may change it in random way.

Dynamic lists as such are not a problem.. I do it lots of times in my nice
and
pure programs that use *TagList() functions. You just decide how long your
list needs to be, and allocate it:
  DEF list : PTR TO LONG

  list := New( of_elements * SIZEOF LONG )
And when you need a list in list you just allocate it the same way
  list[ offset ] := New( of_elements_this_time * SIZEOF LONG )

The only problem I can see is that easygui might rely on the lists being
E-lists, but I think there is such a function as NewList() or something
(check
the guide) that would solve that problem.

@endnode

@node ID25_2 "EasyGUI: dynamic definition? (ID25_2)"
From: jason@fsel.com ("Jason Hulance")
Subject: RE: EasyGUI: dynamic definition?
Date: Mon, 16 Nov 1998 09:37:38 -0000

Francesco De Napoli wrote:

> Hello boys,

...and girls,

> I need to do a dynamic definition of EasyGUI list, but I don't
> know if it is possible, and how do it. Is there someone who has any
> examples or knows how do it?

It's very simple.  Take a look at:

  Src/Tools/EasyGUI/Examples/testchange.e
  Src/Tools/EasyGUI/Examples/testchange2.e
  Src/Tools/EasyGUI/Examples/tabs_test2.e

For a truly dynamic GUI, you'd construct the GUI definitions using
dynamically allocated E-lists (i.e., using List()) and fill in the
data.  Of course, in the most dynamic cases, you'll need to worry
about constructing a valid GUI definition.  EasyGUI will fail
gracefully with most bad definitions, but not all.  "Caveat
programmer."

Cheers!

- --
Your numbers are 10, 1, 6, 9, 2 and 6.  The target is 646.
The conundrum for today is "naimrtieu"
======================================================================
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

@endnode

@node ID25_3 "EasyGUI: dynamic definition? (ID25_3)"
From: zokie@teseo.it (Francesco De Napoli)
Date: Tue, 17 Nov 1998 18:43:37 +0100
Subject: Re: EasyGUI: dynamic definition?

Hello Jason

On 16-Nov-98, Jason Hulance wrote:
> Francesco De Napoli wrote:
>
>> Hello boys,
>
> ...and girls,

:)


> It's very simple.  Take a look at:
>
>  Src/Tools/EasyGUI/Examples/testchange.e
>  Src/Tools/EasyGUI/Examples/testchange2.e
>  Src/Tools/EasyGUI/Examples/tabs_test2.e

I had studied them long time ago, and I had used those solutions for my
old
guis, but now I need more dynamic definition. I'm writing a kind of
database, and
users may add or remove archives and/or fields in record, and  input
form must adapt himself to new record definition.

>
> For a truly dynamic GUI, you'd construct the GUI definitions using
> dynamically allocated E-lists (i.e., using List()) and fill in the

This is what I need, and now I'm experimenting :)
I hope to meet not very often Mr Guru :)

I will thank you and other people who suggest solutions.

- --
 "When do you want to reboot today?"

@endnode



@node ID26_0 "Audio Module (ID26_0)"
From: sanric@ronet.it (Riccardo Santato)
Date: Sat, 14 Nov 1998 13:44:53 +0100
Subject: Audio Module

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.

- --BOUNDARY.2015332896.1
Content-Type: text/plain

Hello world,

After having received the source for audio.device from Rainer Muller I
decided
to make a module of it, in order to use it at best with AmigaE.
It's very simple, it doesn't have lots of features, just one function, but
it
could be useful for tiny programs.
Have fun !


======================================================
Santato Riccardo

                               sanric@ronet.it
                               www.geocities.com/SunsetStrip/Stage/6141/
=====================================================



- --BOUNDARY.2015332896.1
Content-Type: application/x-lha; name="sc_sound.lha"
Content-Disposition: attachment; filename="sc_sound.lha"
Content-Transfer-Encoding: base64
Content-Description: System Compliant Sound Module

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
M03hlhxAMYAA

- --BOUNDARY.2015332896.1--

@endnode

@node ID26_1 "Audio Module (ID26_1)"
Date: Tue, 17 Nov 1998 10:39:29 +0100
From: Rainer.M.Mueller@uni-konstanz.de (Rainer =?iso-8859-1?Q?M=FCller?=)
Subject: Re: Audio Module

Hi !

>After having received the source for audio.device from Rainer Muller I
decided
>to make a module of it, in order to use it at best with AmigaE.
>It's very simple, it doesn't have lots of features, just one function, but=
 it
>could be useful for tiny programs.
>Have fun !

There is a little mistake in the readme file. It is *wrong* that all four
channels are allocated. Only *one* channel is allocated.

More detailed:

*  arequest1.data  :=3D[1,2,4,8]:CHAR
   arequest1.length:=3D4
means that the program tries to allocate channel '1'. If this fails, '2' is
tried. If this fails too, then channel '3' is try'ed....

*  arequest1.data  :=3D[8,2,4,1]:CHAR
   arequest1.length:=3D4
means that the program tries to allocate channel '4'. If this fails, '2' is
tried. If this fails too, then channel '3' is try'ed....

*  arequest1.data  :=3D[1]:CHAR
   arequest1.length:=3D1
would be: try to allocate channel '1' if this fails, bad luck :-)

*  arequest1.data  :=3D[15]:CHAR
   arequest1.length:=3D1
means: allocate ALL channels

arequest1.data:=3D[]:CHAR contains bit-masks of the channels which are to be
allocated. The first mask is tried first, then the second, etc.
1 and 8 (=3D%0001 and %1000) are on the right
2 and 4 (=3D%0010 and %0100) are on the left.
- -> the bit-mask of the first example is [0001,0010,0100,1000]
the bit-mask of the last example is [1111].

Hope it's more clear, how the allocation of channels works.

Wait, last example:

*  arequest1.data  :=3D[3,5,10,12,1,2,4,8]:CHAR
   arequest1.length:=3D8
this one tries at first to allocate a stereo channel (=3Done on the left,
on=
e
on the right) using the four combinations which lead to a stereo channel.
If this is not possible, all for possibilities to get an mono-channel are
tried.

Greetings,

   Rainer

=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
      //  Rainer M=FCller  A1200-030-50MHz 16MB/850MB
     //                  Pentium  166MHz 32MB/2.1GB
    //    have a look at: Aminet:mus/edit/SampleE
\\ //
 \X/  AMIGA for ever !

@endnode



@node ID27_0 "socket.library (ID27_0)"
From: dissident@mail.telepac.pt (Roberto)
Date: Sun, 15 Nov 1998 18:08:28 +0000
Subject: socket.library

 I'm looking for examples on using socket.library (and TCP/IP in general) in
AmigaE. Also, the modules for socket.library would be great! Anyone?

- --
rOBERTo ->dissident@mail.telepac.pt<- ICQ:14501808

@endnode



@node ID28_0 "ECLASS_ACTIVEWINDOW (ID28_0)"
From: dave@shaye.demon.co.uk ("Dave Denton")
Date: 15 Nov 98 22:47:12 +0000
Subject: Re:IECLASS_ACTIVEWINDOW

Sorry if you have recieved this message twice, I sent it from the wrong
account. :)

I'm Sorry if your mail just took half a hour to down load, but I couldn't
think of a better way to get my problem solved.

I've tried all of the following:

IECLASS_CLOSEWINDOW,IECLASS_SIZEWINDOW,IECLASS_REFRESHWINDOW,
IECLASS_ACTIVEWINDOW,IECLASS_INACTIVEWINDOW,IECLASS_CHANGEWINDOW

And just can't semmed to get a result from any of them on the line marked
in the source. All I Really want is to know is when the active window has
changed witout a slow loop constantly checking it with intuitionbase.

PROC justdoit()
 DEF msg:PTR TO mn,ievent:PTR TO inputevent,sigrcvd,msgid,class,msgtype,num
  LOOP
   sigrcvd:=Wait(SIGBREAKF_CTRL_C OR cxsigbit)
   WHILE (msg:=GetMsg(messport))
    ievent:=CxMsgData(msg) ; msgtype:=CxMsgType(msg) ; ReplyMsg(msg)
    SELECT msgtype
     CASE CXM_IEVENT
      class:=ievent.class
      SELECT class
       CASE IECLASS_RAWKEY
        buff:=New(100)
        num:=MapRawKey(ievent,buff,100,0)
        IF num=1
         WriteF('\s\n',buff)
        ENDIF
       CASE IECLASS_ACTIVEWINDOW         -> This here line is marked
        WriteF('IECLASS_ACTIVEWINDOW\n')
      ENDSELECT
     CASE CXM_COMMAND
      msgid:=CxMsgID(msg)
      SELECT msgid
       CASE CXCMD_DISABLE
        ActivateCxObj(brokerobj,0)
       CASE CXCMD_ENABLE
        ActivateCxObj(brokerobj,1)
       CASE CXCMD_KILL
        RETURN 0
       CASE CXCMD_UNIQUE
        RETURN 0
       CASE CXCMD_APPEAR
        WriteF('Appear\n')
       CASE CXCMD_DISAPPEAR
        WriteF('DisAppear\n')
      ENDSELECT
     ENDSELECT
   ENDWHILE
   IF (sigrcvd AND SIGBREAKF_CTRL_C)
     RETURN 0
   ENDIF
  ENDLOOP
ENDPROC

Kind Regards D.A.Denton

dave@shaye.demon.co.uk

- --

@endnode

@node ID28_1 "ECLASS_ACTIVEWINDOW (ID28_1)"
Date: Mon, 16 Nov 1998 08:29:18 +0100 (MET)
From: subvcbhd@calvados.zrz.TU-Berlin.DE (Henk Jonas)
Subject: Re:IECLASS_ACTIVEWINDOW

On 15 Nov 1998, Dave Denton wrote:

> Sorry if you have recieved this message twice, I sent it from the wrong
> account. :)
>=20
> I'm Sorry if your mail just took half a hour to down load, but I couldn't
> think of a better way to get my problem solved.=20
> =20
> I've tried all of the following:=20
>=20
> IECLASS_CLOSEWINDOW,IECLASS_SIZEWINDOW,IECLASS_REFRESHWINDOW,
> IECLASS_ACTIVEWINDOW,IECLASS_INACTIVEWINDOW,IECLASS_CHANGEWINDOW
Why you dont try to watch the window.userport for IDCMP_Meassages?
If you watch for CLOSEWINDOW etc. you have a window open i think.

Henk
- ----------------------------------------------------------------
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

@endnode

@node ID28_2 "ECLASS_ACTIVEWINDOW (ID28_2)"
Date: Mon, 16 Nov 1998 15:58:55 +0100 (MET)
From: mfontana@komodo.ing.unico.it (mauro fontana)
Subject: Re:IECLASS_ACTIVEWINDOW

[...]
> > I've tried all of the following:
> >
> > IECLASS_CLOSEWINDOW,IECLASS_SIZEWINDOW,IECLASS_REFRESHWINDOW,
> > IECLASS_ACTIVEWINDOW,IECLASS_INACTIVEWINDOW,IECLASS_CHANGEWINDOW
> Why you dont try to watch the window.userport for IDCMP_Meassages?
> If you watch for CLOSEWINDOW etc. you have a window open i think.

Mumble mumble... I think this is not possible (in a legal way, however) as
IDCMP_Messages are sent only to those window ports that require them and
to which that message is relevant. If I press a closegadget on a window
only the winport of that window will receive the IDCMP_CLOSEWINDOW signal.
For another window to know that, it should get a copy of the windowport
pointer stored in the window structure and then pay attention that that
pointer remains valid. Moreover the 'visitor' would only know the same
messages that the original window has asked for and would not be allowed
to retrieve the msg from the port (otherwise it would conflict with the
original window). Getting a message from a window means clearing the
signal that signal the arrival of a message. So in practice only either
the original window or the 'visitor' are allowed to access the message
port. So that would be very complex (and with uncertain results).

M&F

@endnode

@node ID28_3 "ECLASS_ACTIVEWINDOW (ID28_3)"
Date: Mon, 16 Nov 1998 17:30:27 +0100 (MET)
From: subvcbhd@calvados.zrz.TU-Berlin.DE (Henk Jonas)
Subject: Re:IECLASS_ACTIVEWINDOW

On Mon, 16 Nov 1998, mauro fontana wrote:

> > Why you dont try to watch the window.userport for IDCMP_Meassages?
> > If you watch for CLOSEWINDOW etc. you have a window open i think.
>=20
> Mumble mumble... I think this is not possible (in a legal way, however) a=
s
> IDCMP_Messages are sent only to those window ports that require them and
> [...]
> the original window or the 'visitor' are allowed to access the message
> port. So that would be very complex (and with uncertain results).
Ah, sorry, now I understand what you want. You want to now if any window
get some messages like CloseWindow etc. But i am not sure, but maybe the
inputevents will be deleted from Intuition if they belong to Intuition.
Are you sure that your inputhandler will be called BEFOR Intuition?

Henk
- ----------------------------------------------------------------
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

@endnode

@node ID28_4 "ECLASS_ACTIVEWINDOW (ID28_4)"
From: carl.drougge@2.sbbs.se (Carl Drougge)
Date: Mon, 16 Nov 1998 19:27:10 +0100
Subject: Re:IECLASS_ACTIVEWINDOW

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.7624.524.119930688.1
Content-Type: text/plain

Den 15-Nov-98, skrev Dave Denton:

>I've tried all of the following:

>IECLASS_CLOSEWINDOW,IECLASS_SIZEWINDOW,IECLASS_REFRESHWINDOW,
>IECLASS_ACTIVEWINDOW,IECLASS_INACTIVEWINDOW,IECLASS_CHANGEWINDOW

>And just can't semmed to get a result from any of them on the line marked
>in the source. All I Really want is to know is when the active window has
>changed witout a slow loop constantly checking it with intuitionbase.

[...]

Oh well, CX* just struck me: You're using commodities.library.. I have no
experience of what that does or not. =)
Here's a working example of doing it with input.device, attached.

- --BOUNDARY.7624.524.119930688.1
Content-Type: text/plain; charset=iso-8859-1; name="activewin.e"
Content-Transfer-Encoding: quoted-printable

MODULE 'exec/ports'             ,
       'exec/io'                ,
       'exec/nodes'             ,
       'exec/interrupts'        ,
       'devices/input'          ,
       'devices/inputevent'     ,
       'dos/dos'

RAISE "PORT" IF CreateMsgPort()      =3D NIL
RAISE "IORQ" IF CreateIORequest() =3D NIL
RAISE "DEV"  IF OpenDevice()         <> FALSE

OBJECT intdata

  a4
  maintask

ENDOBJECT

PROC main() HANDLE

  DEF ioport    =3D NIL   : PTR TO mp     ,
      ioreq     =3D NIL   : PTR TO iostd  ,
      interrupt         : is            ,
      inputopen =3D FALSE                 ,
      active    =3D FALSE                 ,
      intdata           : intdata       ,
      a4

  ioport :=3D CreateMsgPort()
  ioreq  :=3D CreateIORequest( ioport , SIZEOF iostd )
  OpenDevice( 'input.device' , 0 , ioreq , 0 )
  inputopen :=3D TRUE

  interrupt.ln.type :=3D NT_INTERRUPT
  interrupt.ln.pri  :=3D 1
  interrupt.ln.name :=3D 'ACTIVE_WINDOW-thingy'
  MOVE.L A4,a4
  intdata.a4        :=3D a4
  intdata.maintask  :=3D FindTask( NIL )
  interrupt.data    :=3D intdata
  interrupt.code    :=3D {int_code}

  ioreq.command :=3D IND_ADDHANDLER
  ioreq.data    :=3D interrupt
  IF DoIO( ioreq ) THEN Raise( "INT" )
  active :=3D TRUE

  LOOP

    IF ( Wait( SIGBREAKF_CTRL_C OR SIGBREAKF_CTRL_F ) AND SIGBREAKF_CTRL_=
C ) THEN Raise( "^C" )
- -> Use a signal you allocate yourself
    WriteF( 'Window deactivated.\n' )

  ENDLOOP

EXCEPT

  IF ( active )
    ioreq.command :=3D IND_REMHANDLER
    ioreq.data    :=3D interrupt
    DoIO( ioreq )
  ENDIF
  IF ( inputopen ) THEN CloseDevice    ( ioreq  )
  IF ( ioreq     ) THEN DeleteIORequest( ioreq  )
  IF ( ioport    ) THEN DeleteMsgPort  ( ioport )

ENDPROC

- -> The whole interrupt should really be in asm, to minimize system slowdo=
wn. This gets called A LOT!
int_code:
  MOVEM.L A4/A5,-(A7)
  MOVE.L  (A1),A4
  MOVE.L  A0,-(A7)
  MOVE.L  4(A1),-(A7)
  JSR     __int_code(PC)
  LEA.L   8(A7),A7
  MOVEM.L (A7)+,A4/A5
  RTS

PROC __int_code( inputevent : PTR TO inputevent , maintask )

  IF ( inputevent.class =3D IECLASS_INACTIVEWINDOW ) THEN Signal( maintas=
k , SIGBREAKF_CTRL_F )

ENDPROC inputevent

- --BOUNDARY.7624.524.119930688.1--

@endnode



@node ID29_0 "MUI Listtree programming ?? (ID29_0)"
From: r.zimmerling@link-dd.cl.sub.de (Rene Zimmerling)
Subject: MUI Listtree programming ??
Date: 12 Oct 1998 18:42:29 +0100

 Hi !

 I search examples of MUI Listtree Object Programming in E.

 (Listtree.mcc ist a MUI Customclass by Klaus Melchior)

- --                                                      ____________
                                                   __  / /
 Good Byte sagt Ren=E9 Zimmerling und MicroDot       \ \/ /   Amiga
 Member of Deutsche Amiga Software Schmiede         \_\/    Rulez =20
 DASS im WWW =3D http://programmierer.freepage.de/dassclub

@endnode



@node ID30_0 "E libraries and arexx (ID30_0)"
Date: Tue, 17 Nov 1998 07:19:46 +0100
From: narg@polbox.com (Piotr Gapinski)
Subject: E libraries and arexx

Hello

Can I create rexx libraries using emigaE?

- -- Piotr

@endnode

@node ID30_1 "E libraries and arexx (ID30_1)"
From: jason@fsel.com ("Jason Hulance")
Subject: RE: E libraries and arexx
Date: Tue, 17 Nov 1998 09:04:21 -0000

Piotr Gapinski wrote:

> Can I create rexx libraries using emigaE?

Yes, I would have thought so.  You'd need to find some documentation on
making ARexx libraries, of course.  If you manage to find some then I for
one would be very interested to see it...

Cheers!

- --
Your numbers are 7, 8, 7, 2, 9 and 10.  The target is 545.
The conundrum for today is "norlcheci"
======================================================================
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

@endnode

@node ID30_2 "E libraries and arexx (ID30_2)"
From: carl.drougge@2.sbbs.se (Carl Drougge)
Date: Tue, 17 Nov 1998 08:11:10 +0100
Subject: Re: E libraries and arexx

Den 17-Nov-98, skrev Piotr Gapinski:

>Hello

>Can I create rexx libraries using emigaE?

I have no idea how arexx-libraries work, but since AddLib() takes an
entrypoint, wich is normally -30 (the first function in a normal library,
and
E libraries too) it should be so simple as putting the arexxcode in the
first
function.

I don't know what it should look like, but I have written a "normal" arexx
interface, so I might be able to answer more general questions.

@endnode

@node ID30_3 "E libraries and arexx (ID30_3)"
Date: Wed, 18 Nov 1998 07:50:19 +0100
From: narg@polbox.com (Piotr Gapinski)
Subject: Re: E libraries and arexx

Hello

Carl Drougge wrote:

> >Can I create rexx libraries using emigaE?
> I have no idea how arexx-libraries work, but since AddLib() takes an
> entrypoint, wich is normally -30 (the first function in a normal library,
and
> E libraries too) it should be so simple as putting the arexxcode in the
first
> function.

BUT in docs Wouter wrote that e-library should be opened and closed only
once. In
arexx there is addlib and then? Libraries are opened on arexx process?

- -- Piotr

@endnode

@node ID30_4 "E libraries and arexx (ID30_4)"
From: jtierney@cyberlink-inc.com (Jody Tierney)
Date: Wed, 18 Nov 1998 17:18:49 -0500
Subject: Re: E libraries and arexx

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.

- --BOUNDARY.1746629912.1
Content-Type: text/plain

  Hi,

On 17-Nov-98, Jason Hulance wrote:
JH>> Can I create rexx libraries using emigaE?
JH>
JH> Yes, I would have thought so.  You'd need to find some documentation on
JH> making ARexx libraries, of course.  If you manage to find some then I
for
JH> one would be very interested to see it...

  The attached file contains the highlights of the "Function Libraries"
chapter of Commodore's "Amiga Programmer's Guide to ARexx" (reprinted
without permission - shhh, don't tell anyone. :-) ).  The parts I didn't
include are:
  - The summary on what a libray is, & how to open & close one.
  - The "Creating Function Libraries with SAS/C" section.
  - The "Creating Function Libraries with Aztec C" section.
  - The Aztec & SAS C example source (Sorry, ran out of time.  If necessary,
I can type these in (why weren't they included on the disk?!) and mail them
later).

- --
                - J.
         -*- Team AMIGA -*-
     jtierney@cyberlink-inc.com
http://www.cyberlink-inc.com/jtierney

- --BOUNDARY.1746629912.1
Content-Type: application/x-lha; name="RexxLibs.lha"
Content-Disposition: attachment; filename="RexxLibs.lha"
Content-Transfer-Encoding: base64

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
TwYJ6iscEEN/yfPLmAMAAA==

- --BOUNDARY.1746629912.1--

@endnode

@node ID30_5 "E libraries and arexx (ID30_5)"
From: jason@fsel.com ("Jason Hulance")
Subject: RE: E libraries and arexx
Date: Thu, 19 Nov 1998 10:17:08 -0000

Jody Tierney wrote:

>   The attached file contains the highlights of the "Function Libraries"
> chapter of Commodore's "Amiga Programmer's Guide to ARexx"

Wow!  Is that all the official documentation there is?  I thought it was
thin on the ground, but that's ridiculous.  An example or three would be
nice...  Is there anything on the Amiga Developer's CD?

I suppose that explains why there are so few ARexx libraries and why the
language didn't really take off as well as CBM might have hoped.

Cheers!

- --
Your numbers are 50, 8, 3, 4, 3 and 2.  The target is 245.
The conundrum for today is "endivcoba"
======================================================================
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

@endnode

@node ID30_6 "E libraries and arexx (ID30_6)"
Date: Thu, 19 Nov 1998 11:44:30 +0100 (MET)
From: mfontana@komodo.ing.unico.it (mauro fontana)
Subject: RE: E libraries and arexx

> I suppose that explains why there are so few ARexx libraries and why the
> language didn't really take off as well as CBM might have hoped.

I don't now what's an Arexx Library, in the sense what are its differences
with a normal library. However I just want to point out that, AFAIK, Arexx
was added as a intercommunicating language between programs, which is
exactly what it has become and highly supported. The fact that it can also
be used for simple scripting does not mean it is a good tool to develop
entire application. It is an interpreted language, so very very slow. For
this point of view, I think we are lucky it has never taken off (otherwise
we now would have tons of applications absurdly written in Arexx).

However it is well established, supported and relatively powerful as a
communication language between programs, that was its main aim, I suppose.

M&F

@endnode

@node ID30_7 "E libraries and arexx (ID30_7)"
From: jason@fsel.com ("Jason Hulance")
Subject: RE: E libraries and arexx
Date: Thu, 19 Nov 1998 13:55:07 -0000

mauro fontana wrote:

> However I just want to point out that, AFAIK, Arexx
> was added as a intercommunicating language between programs, which is
> exactly what it has become and highly supported.

Yes, it does do interprocess commication, and in this way, yes, it is well
supported.

> The fact that it can also be used for simple scripting does not mean it
> is a good tool to develop entire application. It is an interpreted
> language, so very very slow. For this point of view, I think we are lucky
> it has never taken off (otherwise we now would have tons of applications
> absurdly written in Arexx).

Err... just like BASIC.

I think CBM saw ARexx as a way to bundle the machine with a programming
language, much like they did originally with Microsoft BASIC.  And there's
absolutely nothing wrong with that idea.  (Even BASIC has its legitimate
uses [mainly for prototyping].)  People have done libraries that allow
ARexx to use Intuition functions (for example), but it seems to have been
a case of too little, too late.  It's a real shame.  ARexx is not just
a scripting language.  It has quite a few nice features, and CBM never
seemed to promote well enough.

Cheers!

- --
Your numbers are 25, 5, 1, 2, 7 and 7.  The target is 677.
The conundrum for today is "lgthsiied"
======================================================================
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

@endnode

@node ID30_8 "E libraries and arexx (ID30_8)"
Date: Thu, 19 Nov 1998 12:13:22 -0500
From: max2@ordigraphe.com ("Maxim Olivier-Adlhoch")
Subject: Re: E libraries and arexx

Jason Hulance wrote:
 People have done libraries that allow
> ARexx to use Intuition functions (for example), but it seems to have been
> a case of too little, too late.  It's a real shame.  ARexx is not just
> a scripting language.  It has quite a few nice features, and CBM never
> seemed to promote well enough.

Well... did you ever see Comodore actually 'promote' something... I'd rather
say they put arexx as a 'surprise'... I remember my A1200 did not even have
documentation of any kind on AREXX... its not even mentioned!!!

If I look at AREXX globally, I think its missive was never well defined by
Comodore and When I look back I see  that programmers defined it
themselves...
just look at the slew of applications now supporting AREXX as an automation
tool and macro builder!  I mean even the little puny utilities now aim and
strive to put AREXX support in them.  Just remember that its still not
possible to do all of that on anything else...  yes there are similar
systems
on other OSes (REXX is actually on OS/2) but HOW MANY ACTUALLY suport a full
- -fledged IPC system and then how many support the same API ;)

I am trying to get a several hundred dollar POP Mailer to be automated on a
Windows NT system and its not even able to properly recognize automated
keystrokes sent by another application...  :(

major pain for me...

I could not even think of achieving (on WinTel) what had been done with
AdPro
when several AREXX built GUIs were popping up to control it in dedicated
ways... safely and without any glitches.

- -Maxim
- --
- ----------------------
Maxim Olivier-Adlhoch
- ----------------------
max2@ordigraphe.com
- ----------------------
Are you a programer... Then Visit STEEL(c) Web Site  before you're left
in the cold...
http://www.geocities.com/SiliconValley/Network/7002/steel_welcome.html
@endnode

@node ID30_9 "E libraries and arexx (ID30_9)"
Date: Thu, 19 Nov 1998 12:03:58 +0000
From: oeolsson@tmisnet.com (Ola Olsson)
Subject: Re: E libraries and arexx

Maxim Olivier-Adlhoch wrote:

> I could not even think of achieving (on WinTel) what had been done with
AdPro
> when several AREXX built GUIs were popping up to control it in dedicated
> ways... safely and without any glitches.

Here, here! I spent more than 6 months writing a data entry interface for
Win95
that had to interactively control MS Word, MS Access, and MS Excel. Geez!
What a
mess. ARexx is an elegant jewell compared to what MS passes off as IPC. The
command structure for these programs is different when running them
internally
than when running externally. MS keeps changing the Object structure between
versions without any concern, it seems, that it corresponds to what was used
before. I hope ARexx never goes away on the Amiga.

Best Regards,
Ola Olsson

@endnode

@node ID30_10 "E libraries and arexx (ID30_10)"
From: jtierney@cyberlink-inc.com (Jody Tierney)
Date: Mon, 23 Nov 1998 19:12:46 -0500
Subject: Re: E libraries and arexx

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.

- --BOUNDARY.1747157976.1
Content-Type: text/plain

On 19-Nov-98, Jason Hulance wrote:
JH>>   The attached file contains the highlights of the "Function
Libraries"
JH>> chapter of Commodore's "Amiga Programmer's Guide to ARexx"
JH>
JH> Wow!  Is that all the official documentation there is?

  AFAIK (but how much is that? ;-) ).

JH> An example or three would be nice...

  Three?  Remember, this is a C= manual.  :-)  ...But I finally did get the
example typed in (attached).

JH>  Is there anything on the Amiga Developer's CD?

  Not that I recall...

- --
                - J.
         -*- Team AMIGA -*-
     jtierney@cyberlink-inc.com
http://www.cyberlink-inc.com/jtierney

- --BOUNDARY.1747157976.1
Content-Type: application/x-lha; name="SmplRxLib.lha"
Content-Disposition: attachment; filename="SmplRxLib.lha"
Content-Transfer-Encoding: base64

IGEtbGg1LdMDAAALCgAA4ph3JQAACmFyZXh4bGliLmOhYgMma7vRpt0Pzv4A/0qUrZQI5Est
4JZEnAJKKkCpgJTKaJrhnMOUYyV9wWClnxu//fc2whrJtKslktvBllt498AbmG2cbae/VaCq
BpT93dGjHYhCvXDB2HjOrRIEOjIcItEoQynMpEmUDSA8+PLCLTJCpA8MerKaXXYFjb7TXrRJ
DHpHq+5KpR6FjNybEcKtfackVKOpM+rGap9USdaShDzUMStevIeJEhxg+309Nq5g+L2Gz7wu
373OEECTaj5El+FZDS5U0869iu3bPvefD2fm77KU3xfv88F6/hg5r+K9aC2+/wOwOu8FHA5X
rUF7F0QPP8+AAn4HB+NHA5sV6zAKYF+T8DhaaSoaeQhy3790MCpbfybhzGlCqasC/xjc4vrx
Ln24tDMmmfCdKuYbENjWzTCoLq7FhVK0WDWnlMk9YGLCR9CcoVc6ctZoP28W56sp06Y1QLuC
4PK75uduThxgyIHAskB47w1nmVN1McZpVVKwfgMZF2pTq0yyNv2YL/wmReHnJHD95F/mQlrR
Szf0fvbIotGvyS54CBf1cHX/85j9Vh9xnkL9OfxPEUcB5FDMHMwod1CVdXWHHRE3fUUNEIhq
A7N6nvP4Vti7L4ruGdWQ3/AnQILFncefGqNpCe0yocxHfw5kJAfSswlT+Wk8uupSc8j3EoYd
ehQR4POt1xQzFCg+o6QNSxJTi1kqBEkzLFp5w0RDg99GI/0kTsM50pNlPYY1SpwuI1/teI0W
jad9GKaTIWJ409kawIJ466xdN51mKDdgt8aNTh/fpDB/QTqLkr8qxRrvrMNOnwY/1GYqRIrb
GkhRdxTiN/cfo3K9BGFetitETfqGMQ+n0BucZDy7Gbw1gs37VvoewfBwPVxsre41RDpCi3ZA
HGNbZAhD81aEZCH5f7TyMihtvFy/lhtklqbM27AfEKO65siPY0P8gAQdNxRi+9pLOIa81+SQ
2c5SdNQUPb7Yo52iLoZlC8juEbDqd661DBccowi4xOl2UxWLP72tlpioB+tWh0ITVZZ2Ju0v
n+6ZyZ0STYUis0tPyLTm7pk9L/WCcXNt018TFx40n8+STIi7W/HJTMLjcLFbE8JmIHe1+jE3
V5Zy1ybvjg+pOsnNo0xiWWP5m1pnMttLmRckUm8dmLkyic7uEP5ZDQ3t7yGgu5dIF/+03EGW
ev9mPQk84m9obfHMguDJ8yK8k825osj77I+wv4rZSir56AW6khnLBSzCX/e9ejBUx7ixoc/a
2PBxuFN7vlAVxcB3Udh1tQeVpUEIyFXRIk8iUKRqP9oCuf7AaFwJugMgZC1saDUt8gAAAKMB
AABhlHclAAAKYXJleHhsaWIuaBfEAOpal621E+f/gD814boJr0ZEFbhcFchsIZ4oTW/tsC2F
J+ZLRHxukmKigrwMgQRNKZACgVNLHG5fLVa/7MASLrZUVY9u/Zx40be5Pinbu76PSfZOEjyF
sL/LfsMpu51EPWWJUzPUmqasj1W9n4q8PXh+rGe3ojDjyOMR0BITKl1gDssChvm5vOlw13JJ
jm5AI+7+iNNqmihiry1x/rY4RvWxKm2H9hKx+gqPPd4DKivDTLms0Rm2Qo6swd74h5HZAHoy
oHTDe+IoWcJ1gBYuJrOiolJq9iqOHh1UHF96etzrPBTqbZf5dvOz5YOVymueyAAdlS1saDUt
1gEAAMMDAACRk3clAAAHbG1rZmlsZRLYAa1jl62m43zvwB+qCQCWk1OSiV4CgRIyojINkrwC
QmOOWvVxuptwpL44//IMJdxbJbi10ARtJ28a8G3Lt+uYF0+tClpChrgQ5J4KZ5gdgZdieXIK
KmIgprAWrg47qwQda0zje4DuGgGNLzlYDXjG++zRNp8u8N/jp8A/3rwezk0K5WGUReJQ82nO
VJ3h2U1jMDHL2hh1HrDux4tztzOy0CGlfBwqs03Ov6I+if+GQ0pOYwpfaVaNRkWgl3/VBalV
JeEGj0Z6h7qh6fQFUDhqs2XYTeuMosX9gjD0pBtEXEYcaZZ5wbw/SUQsRtg9D0U8aN8JZZTa
/D7RTyWQlaDzv811JlJDcFMUUPobNETEVzFrZIhCYlZBQ6Nv4bFTiyBfwkM4jAHCxnDFt1UM
m3hiKGOVb+HTns5zFzmHnuNFp/jWERIJtmvVEWKuHmWWyIkN9q+tQKSfk5qip8G0q+E9WEgs
BHHC1banXfAor3q5sgXWAkC0BJSsJOIST7/zt0a/HPo8tGbf80po457RvY8zjeHfSElV0K1N
EsxyC9PPTNDm02ZSwPFMoTgCdTh1w0dzKZarh/QQ4tXVSklf01AJhHn/1b1pDR3fbdFyuVUi
lMQuqdPzNMAfNi1saDUtaQEAAJsCAAAKknclAAAJc2FzZ2x1ZS5h2S8BaGOTjbiiOPNAPJGC
CLZavKgEVGB5fwfSuAL0ZPSPrYz3W4d3P6GnLm7JfqRgBV2EabW0EFOMJlaNm2nwB+MHoDfl
wIBvWYwBz0xFb8AOU1fEmlioc3wgFxBeMIE62hvxUMZpgSAJ8Z8iiqBKNaUijf5gMXU6xqUa
XMw3UMdbDwnG9XyjoYhI3x41OGSTgoPiHfrtAN74+dCq0yrnzXAIPua2WjnYA3BfJxBwkdez
TzE/42SWACFWxBUFY0D9mXAKe7/Le+7wywuyzf4/bPp9GDcpehcrYNlvdqd8NTtmnZ8tQ92k
fjo0+1MfdSlJO79UBezZoTEM/bQ3GQqycFyxlTCQ9BN43QLKr0Jpj0o+ZP7spTb0sziGMnxU
j7DR1/8bmuzB/yh/7U2D+GsPqBGbIzXf2pLndMz+f9zPyKjB5N1leRYRS6+/QOv1D1yJFo19
nZKOgjqlrsktYCapVeHdF47LRSMUXWWAAA==

- --BOUNDARY.1747157976.1--

@endnode



@node ID31_0 "UU Encoding (ID31_0)"
Date: Tue, 17 Nov 1998 12:11:53 +0100
From: raptor@cs.tu-berlin.de (Gul Dukat)
Subject: UU Encoding

This is a multi-part message in MIME format.

- --------------402ABD87835
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit

Hello guys !

    A module for doing UU (en/de)coding was requested, so
    here it is. I wanted to upload it yesterday but I've
    simply forgotten the disc at home (Sorry !).

  Read the documentation !!!

- --------------402ABD87835
Content-Type: application/x-lha; name="UUCode.lha"
Content-Transfer-Encoding: base64
Content-Disposition: inline; filename="UUCode.lha"

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
- --------------402ABD87835--

@endnode

@node ID31_1 "UU Encoding (ID31_1)"
Date: Tue, 17 Nov 1998 12:36:43 -0500
From: max2@ordigraphe.com ("Maxim Olivier-Adlhoch")
Subject: Re: UU Encoding

Gul Dukat wrote:
>
> Hello guys !
>
>     A module for doing UU (en/de)coding was requested, so
>     here it is. I wanted to upload it yesterday but I've
>     simply forgotten the disc at home (Sorry !).

May I also make a wish to the fairie codemother  (or is codefather ;)
and have the code magically appear at my desktop the week after...

8-D

- -MAxim
- --
- ----------------------
Maxim Olivier-Adlhoch
- ----------------------
max2@ordigraphe.com
- ----------------------
Are you a programer... Then Visit STEEL(c) Web Site  before you're left
in the cold...
http://www.geocities.com/SiliconValley/Network/7002/steel_welcome.html
@endnode



@node ID32_0 "Loudmouth v1.0 (ID32_0)"
Date: Tue, 17 Nov 1998 10:21:37 -0500
From: max2@ordigraphe.com ("Maxim Olivier-Adlhoch")
Subject: Loudmouth v1.0

Hi All,

I've coded a little application Called 'Loud Mouth'.  The concept is
pretty easy... it simply sets-up a little public message port which
waits for someone to send it a String message.

Thus  When using applications which need to notify you but do not have
easy access Consoles (like libraries), this little marvel will fill the
gap for you.

It also has the advantage of SHARING ONE CONSOLE for All tasks using
Loudmouth... thus you can more easily track messages from different
subsystems synchronously ;)

It is remotely stopped. ( I provide a little Shut_up Function and
Application to help you with this).

If anyone wants a copy, please mail me direct and I will prepare you a
little archive in a week or so ;)

- -Maxim

- --
- ----------------------
Maxim Olivier-Adlhoch
- ----------------------
max2@ordigraphe.com
- ----------------------
Are you a programer... Then Visit STEEL(c) Web Site  before you're left
in the cold...
http://www.geocities.com/SiliconValley/Network/7002/steel_welcome.html
@endnode

@node ID32_1 "Loudmouth v1.0 (ID32_1)"
Date: Tue, 17 Nov 1998 15:27:24 +0000 (BST)
From: sac@csd.abdn.ac.uk (Stuart Caie)
Subject: Re: Loudmouth v1.0

On Tue, 17 Nov 1998, Maxim Olivier-Adlhoch wrote:

=>Thus  When using applications which need to notify you but do not have
=>easy access Consoles (like libraries), this little marvel will fill the
=>gap for you.
=>
=>It also has the advantage of SHARING ONE CONSOLE for All tasks using
=>Loudmouth... thus you can more easily track messages from different
=>subsystems synchronously ;)

Dare I mention what Sashimi does?

Stuart

@endnode

@node ID32_2 "Loudmouth v1.0 (ID32_2)"
Date: Tue, 17 Nov 1998 12:27:57 -0500
From: max2@ordigraphe.com ("Maxim Olivier-Adlhoch")
Subject: Re: Loudmouth v1.0

Stuart Caie wrote:
>
> On Tue, 17 Nov 1998, Maxim Olivier-Adlhoch wrote:
>
> =>Thus  When using applications which need to notify you but do not have
> =>easy access Consoles (like libraries), this little marvel will fill the
> =>gap for you.
> =>
> =>It also has the advantage of SHARING ONE CONSOLE for All tasks using
> =>Loudmouth... thus you can more easily track messages from different
> =>subsystems synchronously ;)
>
> Dare I mention what Sashimi does?

Sashimie?

- -MAxim
- --
- ----------------------
Maxim Olivier-Adlhoch
- ----------------------
max2@ordigraphe.com
- ----------------------
Are you a programer... Then Visit STEEL(c) Web Site  before you're left
in the cold...
http://www.geocities.com/SiliconValley/Network/7002/steel_welcome.html
@endnode

@node ID32_3 "Loudmouth v1.0 (ID32_3)"
From: carl.drougge@2.sbbs.se (Carl Drougge)
Date: Tue, 17 Nov 1998 18:44:16 +0100
Subject: Re: Loudmouth v1.0

Den 17-Nov-98, skrev Stuart Caie:

>On Tue, 17 Nov 1998, Maxim Olivier-Adlhoch wrote:

>=>Thus  When using applications which need to notify you but do not have
>=>easy access Consoles (like libraries), this little marvel will fill the
>=>gap for you.
>=>
>=>It also has the advantage of SHARING ONE CONSOLE for All tasks using
>=>Loudmouth... thus you can more easily track messages from different
>=>subsystems synchronously ;)

>Dare I mention what Sashimi does?

Or the much older Sushi? =)
The greatest advantage to these packages is of course the large number of
programs already supporting them (or execs debuging functions to be
precise).

@endnode

@node ID32_4 "Loudmouth v1.0 (ID32_4)"
Date: Wed, 18 Nov 1998 09:50:09 +0000 (BST)
From: sac@csd.abdn.ac.uk (Stuart Caie)
Subject: Re: Loudmouth v1.0

On Tue, 17 Nov 1998, Carl Drougge wrote:
=>Den 17-Nov-98, skrev Stuart Caie:
=>>On Tue, 17 Nov 1998, Maxim Olivier-Adlhoch wrote:
=>>=>It also has the advantage of SHARING ONE CONSOLE for All tasks using
=>>Dare I mention what Sashimi does?
=>Or the much older Sushi? =)
Or the even older than that "Reporter", or "Detective"?

=>The greatest advantage to these packages is of course the large number of
=>programs already supporting them (or execs debuging functions to be
precise).

Yes. Exec has had a 'console' since day one, but it was (and still is)
private,
and has to be used via debug.lib, and has had to be connected to the serial
port at 9600 baud.

However, Reporter, Detective, Sushi, Sashimi and MungFriend all patch the
secret LVOs so the output goes other than the serial port.

Sushi has bugs in it, and is not supported. Sashimi and MungFriend are both
supported, and safer/newer/easier to use than the old Sushi. I prefer
Sashimi
for my own highly debatable reasons.

Anyway, an example of a 'Console' which I use is:

Run <>NIL: Sashimi CONSOLE
WINDOW=VNC:///-1/Console/MENU/PROPY/ICONIFY/ICONIFIED

How do programs output to it? Well, they normally link with debug.lib, E has
had tools/debug.m for quite a while.

How do you prepare a source to print debug messages? Like so:

OPT PREPROCESS

#define DEBUG       -> debugging output enabled
- ->#define DEBUG     -> debugging output disabled (comment out #define)

#ifdef DEBUG
  MODULE 'tools/debug'
  #define D(x,y) kprintf(x,y)
#endif
#ifndef DEBUG
  #define D(x,y)
#endif

PROC main()
  D('MyApp: startup: {main}=$\h arg=$\h\n',[{main},arg])
  blah_blah_blah()
  D('MyApp: blah_blah_blah() done\n',NIL)
ENDPROC

Stuart

@endnode

@node ID32_5 "Loudmouth v1.0 (ID32_5)"
Date: Wed, 18 Nov 1998 14:06:02 -0500
From: max2@ordigraphe.com ("Maxim Olivier-Adlhoch")
Subject: Re: Loudmouth v1.0

Stuart Caie wrote:

> However, Reporter, Detective, Sushi, Sashimi and MungFriend all patch the
> secret LVOs so the output goes other than the serial port.
>
> Sushi has bugs in it, and is not supported. Sashimi and MungFriend are
both
> supported, and safer/newer/easier to use than the old Sushi. I prefer
Sashimi
> for my own highly debatable reasons.
>
> Anyway, an example of a 'Console' which I use is:
>
> Run <>NIL: Sashimi CONSOLE
WINDOW=VNC:///-1/Console/MENU/PROPY/ICONIFY/ICONIFIED
>

   is Sashimi on Aminet?  if so, where?

> How do programs output to it? Well, they normally link with debug.lib, E
has
> had tools/debug.m for quite a while.
>
> How do you prepare a source to print debug messages? Like so:
>
> OPT PREPROCESS
[...]

Well, I see that its not that hard to get such a thing going... already. but
Loudmouth is Command driven (and even if its still just a hatchling) I am
able to
extend its functionality to something more than a simple CON...

Its also very easy to use... no lib to open, no special #defines, etc.  all
you do
is put the dormant application (loudmouth) in your wbstartup.  then any task
which
uses it will wake it up.  You just have to use a module (loudm.m) which
knows the
protocol by using any of its dedication functions like loudm_talk('string')
or
loudm_shutup(). to print variables as you would with a PrintF, just use
StringF and
dynamically build your string... ;)

  I will extend Loudmouth's capabilities in time,  but for now its just a
shared
console...

- -Maxim
- --
- ----------------------
Maxim Olivier-Adlhoch
- ----------------------
max2@ordigraphe.com
- ----------------------
Are you a programer... Then Visit STEEL(c) Web Site  before you're left
in the cold...
http://www.geocities.com/SiliconValley/Network/7002/steel_welcome.html
@endnode

@node ID32_6 "Loudmouth v1.0 (ID32_6)"
From: carl.drougge@2.sbbs.se (Carl Drougge)
Date: Fri, 20 Nov 1998 00:49:28 +0100
Subject: Re: Loudmouth v1.0

Den 18-Nov-98, skrev Maxim Olivier-Adlhoch:

[About sushi-like programs]

>> How do programs output to it? Well, they normally link with debug.lib, E
has
>> had tools/debug.m for quite a while.
>>
>> How do you prepare a source to print debug messages? Like so:
>>
>> OPT PREPROCESS
>[...]

>Well, I see that its not that hard to get such a thing going... already.
but
>Loudmouth is Command driven (and even if its still just a hatchling) I am
able
>to
>extend its functionality to something more than a simple CON...

>Its also very easy to use... no lib to open, no special #defines, etc.  all
>you do
>is put the dormant application (loudmouth) in your wbstartup.  then any
task
>which
>uses it will wake it up.  You just have to use a module (loudm.m) which
knows
>the
>protocol by using any of its dedication functions like loudm_talk('string')
or
>loudm_shutup(). to print variables as you would with a PrintF, just use
>StringF and
>dynamically build your string... ;)

And if you want to type long names you don't need any defines or libs or
anything to use execs debugging either. If you like me have a genuine VT320
terminal as well you don't have to have any program running to see the
output
either.
And debug.lib (debug.m in E) supports WriteF()-style controls without using
StringF() (with kprintf()).

@endnode

@node ID32_7 "Loudmouth v1.0 (ID32_7)"
Date: Thu, 19 Nov 1998 19:27:16 -0500
From: max2@ordigraphe.com ("Maxim Olivier-Adlhoch")
Subject: Re: Loudmouth v1.0

Carl Drougge wrote:
> And if you want to type long names you don't need any defines or libs or
> anything to use execs debugging either. If you like me have a genuine
VT320
> terminal as well you don't have to have any program running to see the
output
> either.
> And debug.lib (debug.m in E) supports WriteF()-style controls without
using
> StringF() (with kprintf()).

  Loudmouth will be getting a little more functionality than a console. Not
today, not
tomorrow but soon.    As I said, it is a command-driven client-server
debuging tool.  At
version 1.0 all it supports is simple Console messages.  It takes about 2
mins to
understand, instal and use and It will be getting Direct(stack-based) PrintF
style
argument passing in the next version.

Possible features to come:
- --------------------------
Argument Parameters overriding!
It might even be used to generate Official logs and stuff like that.
Replication step logger
scrolleable/threaded console messages
etc.

It also has the advantage of being implemented by myself, so I can bend it
to my will or
to the will of any user which uses it.  ;-)

- -Maxim

- --
- ----------------------
Maxim Olivier-Adlhoch
- ----------------------
max2@ordigraphe.com
- ----------------------
Are you a programer... Then Visit STEEL(c) Web Site  before you're left
in the cold...
http://www.geocities.com/SiliconValley/Network/7002/steel_welcome.html
@endnode

@node ID32_8 "Loudmouth v1.0 (ID32_8)"
Date: Fri, 20 Nov 1998 11:47:13 +0000 (BST)
From: sac@csd.abdn.ac.uk (Stuart Caie)
Subject: Re: Loudmouth v1.0

On Thu, 19 Nov 1998, Maxim Olivier-Adlhoch wrote:

=>Possible features to come:
=>--------------------------
=>Argument Parameters overriding!
=>It might even be used to generate Official logs and stuff like that.
=>Replication step logger
=>scrolleable/threaded console messages
=>etc.

What it must have: atomic messages.

Stuart

@endnode

@node ID32_9 "Loudmouth v1.0 (ID32_9)"
Date: Fri, 20 Nov 1998 09:12:44 -0500
From: max2@ordigraphe.com ("Maxim Olivier-Adlhoch")
Subject: Re: Loudmouth v1.0

Stuart Caie wrote:
>
> On Thu, 19 Nov 1998, Maxim Olivier-Adlhoch wrote:
>
> =>Possible features to come:
> =>--------------------------
> =>Argument Parameters overriding!
> =>It might even be used to generate Official logs and stuff like that.
> =>Replication step logger
> =>scrolleable/threaded console messages
> =>etc.
>
> What it must have: atomic messages.

You mean that the memory space used to display ge string is Copied from
the string memory used by the client application?

- -Maxim
- --
- ----------------------
Maxim Olivier-Adlhoch
- ----------------------
max2@ordigraphe.com
- ----------------------
Are you a programer... Then Visit STEEL(c) Web Site  before you're left
in the cold...
http://www.geocities.com/SiliconValley/Network/7002/steel_welcome.html
@endnode

@node ID32_10 "Loudmouth v1.0 (ID32_10)"
Date: Fri, 20 Nov 1998 14:19:57 +0000 (BST)
From: sac@csd.abdn.ac.uk (Stuart Caie)
Subject: Re: Loudmouth v1.0

On Fri, 20 Nov 1998, Maxim Olivier-Adlhoch wrote:

=>> What it must have: atomic messages.
=>You mean that the memory space used to display ge string is Copied from
=>the string memory used by the client application?

No, I mean that if two clients write a message at the same time, the
messages do not mix with each other.

Stuart

@endnode

@node ID32_11 "Loudmouth v1.0 (ID32_11)"
Date: Fri, 20 Nov 1998 10:51:00 -0500
From: max2@ordigraphe.com ("Maxim Olivier-Adlhoch")
Subject: Re: Loudmouth v1.0

Stuart Caie wrote:
>
> On Fri, 20 Nov 1998, Maxim Olivier-Adlhoch wrote:
>
> =>> What it must have: atomic messages.
> =>You mean that the memory space used to display ge string is Copied from
> =>the string memory used by the client application?
>
> No, I mean that if two clients write a message at the same time, the
> messages do not mix with each other.

Loudmouth is MEssage/port based... so 15 apps could send me a message but
Loudmouth'd still only process them one at a time in the same order they
arrived (exec msg is FIFO) ;)

Indirectly,  any command sent to the system is also done in a synchronous
way.
A console Message is just one other command...

hence the client/server architecture...  in some way I realize this
resembles
the whole QNX photon system... any graphics display is a message sent to a
display server... this server can reside on ANY computer on the network...
its
a bit like X-Windows but much more low-level and flexible.

Maxim

- --
- ----------------------
Maxim Olivier-Adlhoch
- ----------------------
max2@ordigraphe.com
- ----------------------
Are you a programer... Then Visit STEEL(c) Web Site  before you're left
in the cold...
http://www.geocities.com/SiliconValley/Network/7002/steel_welcome.html
@endnode



@node ID33_0 "Closing Libraries built with E (ID33_0)"
Date: Tue, 17 Nov 1998 12:45:53 -0500
From: max2@ordigraphe.com ("Maxim Olivier-Adlhoch")
Subject: Closing Libraries built with E

Hi all,

I'm currently getting quite annoyed at the way E seems to build its
libraries...

I know that with Sas/C I had much more control, since I was able to
define a Proc which could verify what to do when CloseLib is Called on
an opened library... And I a was also able to safely implement a hack
making my library safe to close even if A task still has it 'opened'.
(Which has not been able to close it) but is frozen because of a loop or
some other flow error...

I used to open the library, call a function named SafeHack() which I
implemented into freeing ALL resources opened by this library and then
set the open counter to 1 BEFORE returning... thus when the task
actually calls CloseLib() it makes the library accessible for an Avail
Flush...

But E doesn't and really does a good job of ignoring the OpenCount for
its evaluation of if it should be de-allocatable...

Can someone tell me how I can Force the Library to close itself forever
so I do not have to Reboot my damn computer every I run a new pass of my
library... which sometimes is the CAUSE of the failing loop construct in
the first place...

you see I'm not to keen on seeing my HD scrape for 10 seconds strait
when the system boots because its loading bg images, wbstartup stuff as
well as the fonts and all the ordinary stuff...

Its also a VERY long process to debug...

- -Maxim

- --
- ----------------------
Maxim Olivier-Adlhoch
- ----------------------
max2@ordigraphe.com
- ----------------------
Are you a programer... Then Visit STEEL(c) Web Site  before you're left
in the cold...
http://www.geocities.com/SiliconValley/Network/7002/steel_welcome.html
@endnode

@node ID33_1 "Closing Libraries built with E (ID33_1)"
Date: Tue, 17 Nov 1998 17:07:20 -0500
From: max2@ordigraphe.com ("Maxim Olivier-Adlhoch")
Subject: Re: Closing Libraries built with E

Maxim Olivier-Adlhoch wrote:
>
> Hi all,
>
> I'm currently getting quite annoyed at the way E seems to build its
> libraries...
[...]

Sorry If my last e-mail was aggressive at E... please don't flame me or tell
how
much better E is than this or that.. I already know pretty much...

But I'd still like some tips if any of you know how I can cause opened libs
to be
forcefully 'destroyed'...

- -MAxim

- --
- ----------------------
Maxim Olivier-Adlhoch
- ----------------------
max2@ordigraphe.com
- ----------------------
Are you a programer... Then Visit STEEL(c) Web Site  before you're left
in the cold...
http://www.geocities.com/SiliconValley/Network/7002/steel_welcome.html
@endnode

@node ID33_2 "Closing Libraries built with E (ID33_2)"
Date: Thu, 19 Nov 1998 12:22:11 -0500
From: max2@ordigraphe.com ("Maxim Olivier-Adlhoch")
Subject: Re: Closing Libraries built with E

Maxim Olivier-Adlhoch wrote:
>
> Maxim Olivier-Adlhoch wrote:
>
> But I'd still like some tips if any of you know how I can cause opened
libs to be
> forcefully 'destroyed'...

um,  still no replies on this one... did I hit a softspot ?

btw, Can any confirm to me that the OS command  'avail flush' should be
de-allocating opened (and dormant) libraries...  I find it a bit weird to do
an
AllocMem(10000000, NIL) on a machine... I fear, one day, memory quantity
will not
be an issue....  ;

should it be typed 'avail FLUSH'  or is another switch missing like 'avail
FLUSH
ALL'  or something like that?

I am able to free libs in memory with the AllocMem 'trick' but I have not
tried to
set Library.opencount to 1 just before closing it and performing an
AllocMem.  I
was trying with 'avail flush' and it never worked... not even for all other
libs.

(I'm using sysinfo to detect which libraries are still dormant on my
computer)

- -MAxim

- --
- ----------------------
Maxim Olivier-Adlhoch
- ----------------------
max2@ordigraphe.com
- ----------------------
Are you a programer... Then Visit STEEL(c) Web Site  before you're left
in the cold...
http://www.geocities.com/SiliconValley/Network/7002/steel_welcome.html
@endnode

@node ID33_3 "Closing Libraries built with E (ID33_3)"
From: carl.drougge@2.sbbs.se (Carl Drougge)
Date: Thu, 19 Nov 1998 23:21:55 +0100
Subject: Re: Closing Libraries built with E

Den 17-Nov-98, skrev Maxim Olivier-Adlhoch:

>I know that with Sas/C I had much more control, since I was able to
>define a Proc which could verify what to do when CloseLib is Called on
>an opened library... And I a was also able to safely implement a hack
>making my library safe to close even if A task still has it 'opened'.
>(Which has not been able to close it) but is frozen because of a loop or
>some other flow error...

With Sas/C you also had more work. =)
Well, I think EC should have more options for libraries too.

>I used to open the library, call a function named SafeHack() which I
>implemented into freeing ALL resources opened by this library and then
>set the open counter to 1 BEFORE returning... thus when the task
>actually calls CloseLib() it makes the library accessible for an Avail
>Flush...

>But E doesn't and really does a good job of ignoring the OpenCount for
>its evaluation of if it should be de-allocatable...

Well, so do it all yourself:

Remove() the library from the system.
FreeMem( libbase - libbase.negsize , libbase.negsize + libbase.possize )

This doesn't free everything no, but a little memoryloss for the sake of
debugging isn't too bad, now is it?

@endnode

@node ID33_4 "Closing Libraries built with E (ID33_4)"
Date: Thu, 19 Nov 1998 19:14:33 -0500
From: max2@ordigraphe.com ("Maxim Olivier-Adlhoch")
Subject: Re: Closing Libraries built with E

Carl Drougge wrote:
>
> Den 17-Nov-98, skrev Maxim Olivier-Adlhoch:
>
> >I know that with Sas/C I had much more control, since I was able to
> >define a Proc which could verify what to do when CloseLib is Called on
> >an opened library... And I a was also able to safely implement a hack
> >making my library safe to close even if A task still has it 'opened'.
> >(Which has not been able to close it) but is frozen because of a loop or
> >some other flow error...
>
> With Sas/C you also had more work. =)

Agreed, yet more candy  ;)

> Well, I think EC should have more options for libraries too.

Yeah, Like having the option to make the library safe to open more than
once... even
if it means that the library's global data is Shared ...

I would not mind loosing exceptions and the like if it would make the
library into a
'more standard system... there's more to it than meets the eye, of course,
but it
WOULD be nice ;)

> Well, so do it all yourself:
>
> Remove() the library from the system.
> FreeMem( libbase - libbase.negsize , libbase.negsize + libbase.possize )
>

I have 16Megs of Ram... I do not think 50k of code will do much
difference... the
problem is that it is set somewhere as being loaded anyways...it is still in
the
exec's lists... actually removing the library in such a way is probably a
sure way
to crash your system... as the nest time it will allocate memory it will
start
writing over your library and ... you know what that can do ;-)

> This doesn't free everything no, but a little memoryloss for the sake of
> debugging isn't too bad, now is it?

Its not the memory, its the Fact that it must be removed from the system's
list of
Libraries, otherwise it does not Reload a new version of the library into
memory and
I have to reboot for it to load the new version!

I'd like to know HOW to remove it from the Internal list of loaded
libraries...(I
guess its in Exec)

- -Maxim
- --
- ----------------------
Maxim Olivier-Adlhoch
- ----------------------
max2@ordigraphe.com
- ----------------------
Are you a programer... Then Visit STEEL(c) Web Site  before you're left
in the cold...
http://www.geocities.com/SiliconValley/Network/7002/steel_welcome.html
@endnode

@node ID33_5 "Closing Libraries built with E (ID33_5)"
Date: Fri, 20 Nov 1998 09:30:59 +0100 (MET)
From: mfontana@komodo.ing.unico.it (mauro fontana)
Subject: Re: Closing Libraries built with E

> should it be typed 'avail FLUSH'  or is another switch missing like 'avail
FLUSH
> ALL'  or something like that?

Avail Flush is right. However it *may* free resources that are not
currently allocated. Note the may, as it is should be invoked many times
to be sure all resources currently not locked to be freed.

> (I'm using sysinfo to detect which libraries are still dormant on my
computer)

If those libraries are allocated and used only by your program all it's
required is to check for memory usage. I use Mamminister to see if all the
memory my program has allocated is freed once it exits. It can snap and
flush memory just by pressing two buttons. That may be handy in this
situation. For a library to be flushed it has to have the opencount set to
0. Otherwise it is still locked by some other process.

M&F

@endnode

@node ID33_6 "Closing Libraries built with E (ID33_6)"
Date: Fri, 20 Nov 1998 11:45:09 +0000 (BST)
From: sac@csd.abdn.ac.uk (Stuart Caie)
Subject: Re: Closing Libraries built with E

On Thu, 19 Nov 1998, Maxim Olivier-Adlhoch wrote:

=>> But I'd still like some tips if any of you know how I can cause opened
libs to be
=>> forcefully 'destroyed'...

=>um,  still no replies on this one... did I hit a softspot ?

It's very very dangerous to flush out code while someone is still using it.

=>btw, Can any confirm to me that the OS command  'avail flush' should be
=>de-allocating opened (and dormant) libraries...  I find it a bit weird to
do an
=>AllocMem(10000000, NIL) on a machine... I fear, one day, memory quantity
will not
=>be an issue....  ;

Not with the current AmigaOS - it's like expecting MS-DOS 5.0 to cope with
the
year 2000. It can't and never will - but it will be replaced with something
that can by anyone who cares about their computer working.

Yes, the 'garbage collector' in AmigaOS is only sprung officially into
action
when an AllocMem()/etc fails for the first time. You can have the same
effect
by allocating one more byte than the largest block (although that may become
available between the Avail and the Alloc)

=>should it be typed 'avail FLUSH'  or is another switch missing like 'avail
FLUSH
=>ALL'  or something like that?

It's up to the library itself whether it wants to go or not, and can
certainly
deny the system from freeing it - the system simply calls its Expunge()
routine.

You can free the memory allocated for the header, and remove it from the
libraries list - but you can't remove its segments (because that data is not
stored in a standard place, and you can't capture it by patching) and you
can't
remove any allocations the library itself has made.

You really do have to call Expunge() to get a library out of memory, and you
really can't do anything if it doesn't want to go.

Stuart

@endnode

@node ID33_7 "Closing Libraries built with E (ID33_7)"
Date: Fri, 20 Nov 1998 09:24:48 -0500
From: max2@ordigraphe.com ("Maxim Olivier-Adlhoch")
Subject: Re: Closing Libraries built with E

Stuart Caie wrote:
>
> On Thu, 19 Nov 1998, Maxim Olivier-Adlhoch wrote:
>
> =>> But I'd still like some tips if any of you know how I can cause opened
libs to be
> =>> forcefully 'destroyed'...
>
> =>um,  still no replies on this one... did I hit a softspot ?
>
> It's very very dangerous to flush out code while someone is still using
it.

Yeah but since I'm building the library, I know what is happening and why
its not
running...

so I also know that only one task is using it ;)

>
> =>btw, Can any confirm to me that the OS command  'avail flush' should be
> =>de-allocating opened (and dormant) libraries...  I find it a bit weird
to do an
> =>AllocMem(10000000, NIL) on a machine... I fear, one day, memory quantity
will not
> =>be an issue....  ;
>
> Not with the current AmigaOS - it's like expecting MS-DOS 5.0 to cope with
the
> year 2000. It can't and never will - but it will be replaced with
something
> that can by anyone who cares about their computer working.

>
> Yes, the 'garbage collector' in AmigaOS is only sprung officially into
action
> when an AllocMem()/etc fails for the first time. You can have the same
effect
> by allocating one more byte than the largest block (although that may
become
> available between the Avail and the Alloc)

Well avail flush called three times still does not remove my libs, but the
above allomem
does...

>
> =>should it be typed 'avail FLUSH'  or is another switch missing like
'avail FLUSH
> =>ALL'  or something like that?
>
> It's up to the library itself whether it wants to go or not, and can
certainly
> deny the system from freeing it - the system simply calls its Expunge()
> routine.

Can I call it myself within a debugging toll for example?,

what is the LVO offset for it (as I'm pretty sure I can't use it in normal e
syntax)

>
> You can free the memory allocated for the header, and remove it from the
> libraries list

And where would the libraries list be?

>- but you can't remove its segments (because that data is not
> stored in a standard place, and you can't capture it by patching) and you
can't
> remove any allocations the library itself has made.

with 16 MB RaM in a debugging state, I'm not concerned about memory leaks,
I'm more
concerned about the system being in an unstable state.  So If know how to
trick the OS
into thinking that the library is not in memory (I actually would not
de-allocate it to be
sure nothing crashes...) then I can ask the OS to opend a new version of it
for me ;)

in ALL SAFETY...

>
> You really do have to call Expunge() to get a library out of memory, and
you
> really can't do anything if it doesn't want to go.

But If its been removed from the exec list, Nothing gets unstable right?

- -MAxim

- --
- ----------------------
Maxim Olivier-Adlhoch
- ----------------------
max2@ordigraphe.com
- ----------------------
Are you a programer... Then Visit STEEL(c) Web Site  before you're left
in the cold...
http://www.geocities.com/SiliconValley/Network/7002/steel_welcome.html
@endnode

@node ID33_8 "Closing Libraries built with E (ID33_8)"
From: carl.drougge@2.sbbs.se (Carl Drougge)
Date: Fri, 20 Nov 1998 19:18:00 +0100
Subject: Re: Closing Libraries built with E

Den 20-Nov-98, skrev Maxim Olivier-Adlhoch:

>> Well, so do it all yourself:
>>
>> Remove() the library from the system.
>> FreeMem( libbase - libbase.negsize , libbase.negsize + libbase.possize )
>>

>I have 16Megs of Ram... I do not think 50k of code will do much
difference...
>the
>problem is that it is set somewhere as being loaded anyways...it is still
in
>the
>exec's lists... actually removing the library in such a way is probably a
sure
>way
>to crash your system... as the nest time it will allocate memory it will
start
>writing over your library and ... you know what that can do ;-)

As long as noone is actually trying to use it it's not a problem. If you
worry
that someone is you can skip the freemem bit and just remove it, and that
won't be a problem either. Just:

Forbid()
Remove( libbase.ln )
Permit()

And the library is gone. If someone tries to open a library of that name
none
is found and it will be reloaded from disk. This is exactly what the
Expunge()
does if it does decide to remove the library.

Expunge is if I remember correctly at offset -18, but you don't need it.
Calling it has no effect if the library is open.

@endnode

@node ID33_9 "Closing Libraries built with E (ID33_9)"
Date: Fri, 20 Nov 1998 15:51:29 -0500
From: max2@ordigraphe.com ("Maxim Olivier-Adlhoch")
Subject: Re: Closing Libraries built with E

Carl Drougge wrote:
> As long as noone is actually trying to use it it's not a problem. If you
worry
> that someone is you can skip the freemem bit and just remove it, and that
> won't be a problem either. Just:
>
> Forbid()
> Remove( libbase.ln )
> Permit()
>
> And the library is gone. If someone tries to open a library of that name
none
> is found and it will be reloaded from disk. This is exactly what the
Expunge()
> does if it does decide to remove the library.
>
> Expunge is if I remember correctly at offset -18, but you don't need it.
> Calling it has no effect if the library is open.

Thanks, I did not think the libbase was an inherited class of ln... should
have
checked it out in my C includes...

Thanks... I was waiting for this bit ever since my first post  ;)

- -Maxim

Now we can stop this thread... I've got my answer ;)
- --
- ----------------------
Maxim Olivier-Adlhoch
- ----------------------
max2@ordigraphe.com
- ----------------------
Are you a programer... Then Visit STEEL(c) Web Site  before you're left
in the cold...
http://www.geocities.com/SiliconValley/Network/7002/steel_welcome.html
@endnode

@node ID33_10 "Closing Libraries built with E (ID33_10)"
From: M.Tjoelker@nl.cis.philips.com (Menno Tjoelker)
Subject: Re[2]: Closing Libraries built with E
Date: Sat, 21 Nov 98 23:53:48 -0100

Carl Drougge wrote about Re: Closing Libraries built with E:

> As long as noone is actually trying to use it it's not a problem. If you =
worry
> that someone is you can skip the freemem bit and just remove it, and that=

> won't be a problem either. Just:

> Forbid()
> Remove( libbase.ln )
> Permit()

> And the library is gone. If someone tries to open a library of that name =
none
> is found and it will be reloaded from disk. This is exactly what the Expu=
nge()
> does if it does decide to remove the library.

> Expunge is if I remember correctly at offset -18, but you don't need it.
> Calling it has no effect if the library is open.

This is not a safe method as the library will be Remove()d another time
when it is removed from memory. I don't know what will happen, but it could=

cause Enforcer hits or crashes. Another way to make a library inaccessible
is overwriting its name:

  Forbid()
  libbase:=3DFindName(sysbase.liblist,'xxx.library')
  AstrCopy(libbase.ln.name+StrLen(libbase.ln.name-7),'flushed')
  Permit()

Jilles Tjoelker

- --
- ---
Jilles Tjoelker     |
Craterlaan 6        |   Tel. : +31.40.2427420
5632 AG Eindhoven   |   Fax  : +31.40.2427420 (on request)
The Netherlands     |

*** Author of Iris (mailer), Activity (activity meter),    ***
*** Select_Host (NapsaTerm frontend), Solitaire (WB game), ***
*** Metronome (tool for musicians), etc.                   ***
@endnode

@node ID33_11 "Closing Libraries built with E (ID33_11)"
From: carl.drougge@2.sbbs.se (Carl Drougge)
Date: Sun, 22 Nov 1998 22:22:36 +0100
Subject: Re: Re[2]: Closing Libraries built with E

Den 22-Nov-98, skrev Menno Tjoelker:

>Carl Drougge wrote about Re: Closing Libraries built with E:

>> As long as noone is actually trying to use it it's not a problem. If you
>worry
>> that someone is you can skip the freemem bit and just remove it, and that
>> won't be a problem either. Just:

>> Forbid()
>> Remove( libbase.ln )
>> Permit()

>> And the library is gone. If someone tries to open a library of that name
>none
>> is found and it will be reloaded from disk. This is exactly what the
>Expunge()
>> does if it does decide to remove the library.

>> Expunge is if I remember correctly at offset -18, but you don't need it.
>> Calling it has no effect if the library is open.

>This is not a safe method as the library will be Remove()d another time
>when it is removed from memory. I don't know what will happen, but it could
>cause Enforcer hits or crashes. Another way to make a library inaccessible
>is overwriting its name:

>  Forbid()
>  libbase:=FindName(sysbase.liblist,'xxx.library')
>  AstrCopy(libbase.ln.name+StrLen(libbase.ln.name-7),'flushed')
>  Permit()

Not on *any* library no. But a library which:
1. Is opened by at least one task
2. Will never be closed
3. Will never be called again

In this case it *is* safe to do as I suggested, and that was the case for
him.

@endnode

@node ID33_12 "Closing Libraries built with E (ID33_12)"
Date: Mon, 23 Nov 1998 17:45:12 -0500
From: max2@ordigraphe.com ("Maxim Olivier-Adlhoch")
Subject: Re: Re[2]: Closing Libraries built with E

Carl Drougge wrote:

> >  Forbid()
> >  libbase:=FindName(sysbase.liblist,'xxx.library')
> >  AstrCopy(libbase.ln.name+StrLen(libbase.ln.name-7),'flushed')
> >  Permit()

BOTH ARE SAFE!

>
> Not on *any* library no. But a library which:
> 1. Is opened by at least one task
> 2. Will never be closed
> 3. Will never be called again
>
> In this case it *is* safe to do as I suggested, and that was the case for
him.

The morale of this thread was...

IF YOU ARE PROTOTYPING A LIBRARY AND HAVE ENOUGH MEMORY FOR LIBRARY
REDUNDANCY... Like
all the Wintel shit...  Once the lib is opened... RIGHT AFTER... just
Remove() it  ....

No library I know of gets deallocated automatically when they are closed and
the counter
is at 0.  they stay linked and dormant.  Thus if you unlink it and then
Close It... it
will simply become a memory leak... but it is a 'controled' memory leak.
once you are
satisfied with the library, simply remove the Remove(librarybase.ln)
instruction and your
application remains clean.

Also note that the above method does NOT make your library invalid.  The
library is
always Sane because it is your prototyping APPLICATION which is Removing()
it from the
list.

I'm trying this tonight and I'll get back to all of you to tell you if
simply Removing()
it will be crash-proof.

- -Maxim

- --
- ----------------------
Maxim Olivier-Adlhoch
- ----------------------
max2@ordigraphe.com
- ----------------------
Are you a programer... Then Visit STEEL(c) Web Site  before you're left
in the cold...
http://www.geocities.com/SiliconValley/Network/7002/steel_welcome.html
@endnode



@node ID34_0 "Little ARexx port shutdown query (ID34_0)"
From: Chris.S.Handley@btinternet.com ("Chris S Handley")
Date: 17 Nov 98 23:18:16 +0000
Subject: Little ARexx port shutdown query

Question:
Does anyone know how to find-out the port name OR port pointer for
the sender of a message recieved using GetMsg()?

Extra info:
This is so I can avoid replying to a message sent to myself - unless I
can do this, the following bit of code...

Forbid()
WHILE msg:=GetMsg(hostport) DO ReplyMsg(msg)
Permit()

..will freeze the machine, because it appears to infinite-loop -
presumably replying to it's own reply, and so on, forever!

BTW, I can kludge this to work by (i)exiting the loop after so many
iterations, and (ii)if I remember the pointer of the message I last
sent, I _may_ avoid replying to myself.  But this is really
inefficient - and could well fail with some OS update if it doesn't
like the Forbid being on for too long (perhaps due to PPC message
handling say).

Other than that, ARexxComm seems to work fine now - it's even OO, and
just has left a few small enhancements that could be made...

BTW, would anyone be interested in testing it?

Thanks

- --
Chris S Handley, BEng(Hons) - EMAIL:  Chris.S.Handley@btinternet.com
an Electronic Engineer (plus an overworked PowerAmiga nut & Anime fan)
- ----------------------------------------------------------------------
"One of the laws of nature," Gorden said, "is that half the people
have got to be below average".
"For a Gaussian distribution, yeah," Cooper said.  "Sad though."
                [amusing except from Gregory Benford's book Timescape]
@endnode

@node ID34_1 "Little ARexx port shutdown query (ID34_1)"
Date: Tue, 17 Nov 1998 17:36:45 -0800
From: dobes@mindless.com (Dobes Vandermeer)
Subject: Re: Little ARexx port shutdown query

Chris S Handley wrote:
>
> Question:
> Does anyone know how to find-out the port name OR port pointer for
> the sender of a message recieved using GetMsg()?

Well, you can get the "reply port", which may or may not be the port the
message was sent from.  Otherwise, you should keep in mind that messages
are not sent FROM ports, so there is no way the PutMsg() could include a
port.

> Extra info:
> This is so I can avoid replying to a message sent to myself - unless I
> can do this, the following bit of code...
>
> Forbid()
> WHILE msg:=GetMsg(hostport) DO ReplyMsg(msg)
> Permit()

Set the replyport in the message you SEND to yourself to NIL.  That will
prevent ReplyMsg from sending the message back.

CU
Dobes
@endnode

@node ID34_2 "Little ARexx port shutdown query (ID34_2)"
Date: Wed, 18 Nov 1998 12:37:18 +0100 (MET)
From: mfontana@komodo.ing.unico.it (mauro fontana)
Subject: Re: Little ARexx port shutdown query

On Tue, 17 Nov 1998, Dobes Vandermeer wrote:

> Chris S Handley wrote:
> >
> > Question:
> > Does anyone know how to find-out the port name OR port pointer for
> > the sender of a message recieved using GetMsg()?
>
> Well, you can get the "reply port", which may or may not be the port the
> message was sent from.  Otherwise, you should keep in mind that messages
> are not sent FROM ports, so there is no way the PutMsg() could include a
> port.

It would be better to check the type of the message you have received
(msg.ln.type). If it is a NT_REPLY message then you have NOT to reply it
(this is a general rule). I don't know how ReplyMsg() behaves if no
replying port is specified in the message, but that seems to be another
good solution (if it works) as stated below.

> > Extra info:
> > This is so I can avoid replying to a message sent to myself - unless I
> > can do this, the following bit of code...
> >
> > Forbid()
> > WHILE msg:=GetMsg(hostport) DO ReplyMsg(msg)
> > Permit()
>
> Set the replyport in the message you SEND to yourself to NIL.  That will
> prevent ReplyMsg from sending the message back.

Once your program has sent the command, to know about it it must be in a
wait() procedure. This means here the program MUST check which kind of
message it has received, and, not answering to the NT_REPLY messages it
will simply remove them from the list queue before closing the port.
I should add then when answering messages that are not owned by our task
the NY_REPLY type must be inserted in the msg.ln.type.

I have created a quite complex but efficient way to handle Arexx messages
for my BAH program, but I really can't remember here the details. Once at
home I will have a look at the sources to see how I managed to handle
reply messages.

Last solution is to create another private message port where you are
going to send yourself all the messages you need. This way you know that
all messages that are received by that port do no need a reply (they are
already your own).

M&F

@endnode

@node ID34_3 "Little ARexx port shutdown query (ID34_3)"
Date: Wed, 18 Nov 1998 14:15:05 -0500
From: max2@ordigraphe.com ("Maxim Olivier-Adlhoch")
Subject: Re: Little ARexx port shutdown query

Chris S Handley wrote:
>
> Question:
> Does anyone know how to find-out the port name OR port pointer for
> the sender of a message recieved using GetMsg()?

VERY SIMPLE... if the reply port of your message is the same as your port
used
for receiving messages!

When building messages, it is an almost absolute neccessity for you to
properly setup a replyport, otherwise you will never know when another task
has finished with your message.  thus if you recive a mail at your port
which
has a replyport setup to your port, simply ignore it and move on to the
next.

you might also want to make a port used for 'receiving', and check if the
replyport is your other 'send' port.

if you are not using replyports, well, I wonder how you are handling
messages...

I hope the above makes sense to you... if not just explain what you do not
understand... I'll go deeper.

- -Maxim

- --
- ----------------------
Maxim Olivier-Adlhoch
- ----------------------
max2@ordigraphe.com
- ----------------------
Are you a programer... Then Visit STEEL(c) Web Site  before you're left
in the cold...
http://www.geocities.com/SiliconValley/Network/7002/steel_welcome.html
@endnode

@node ID34_4 "Little ARexx port shutdown query (ID34_4)"
From: Chris.S.Handley@btinternet.com ("Chris S Handley")
Date: 19 Nov 98 00:03:48 +0000
Subject: Re: Little ARexx port shutdown query

Before dying of envy of Chris's Amiga Dobes Vandermeer was able to say:
> Chris S Handley wrote:
> >
> > Question:
> > Does anyone know how to find-out the port name OR port pointer for
> > the sender of a message recieved using GetMsg()?
>
> Well, you can get the "reply port", which may or may not be the port the

As I don't have any docs - how do I access this Reply port?  For
instance, given "rexxmsg:=GetMsg(hostport)", I know I can access the
item "rexxmsg.mn.ln.type".

> > Extra info:
> > This is so I can avoid replying to a message sent to myself - unless I
> > can do this, the following bit of code...
> >
> > Forbid()
> > WHILE msg:=GetMsg(hostport) DO ReplyMsg(msg)
> > Permit()
>
> Set the replyport in the message you SEND to yourself to NIL.  That will
> prevent ReplyMsg from sending the message back.

Thats a nice idea (noticing you are sending it to yourself before
sending it & so doing something to the message) - but I need to know
what object this replyport is stored in!

- --
Chris S Handley, BEng(Hons) - EMAIL:  Chris.S.Handley@btinternet.com
an Electronic Engineer (plus an overworked PowerAmiga nut & Anime fan)
- ----------------------------------------------------------------------
One proud owner of a Risc 240MHz PowerPC 603e, 66MHz bus, 32Mb 60ns
RAM, DMA Fast SCSI-II (10Mb/s), Gbs of HD, SyQuest 230Mb removable
drive, CD drive, Multi-Sync monitor...  all attached to an *AMIGA* :-)
@endnode

@node ID34_5 "Little ARexx port shutdown query (ID34_5)"
From: Chris.S.Handley@btinternet.com ("Chris S Handley")
Date: 19 Nov 98 00:31:32 +0000
Subject: Re: Little ARexx port shutdown query

Before dying of envy of Chris's Amiga mauro fontana was able to say:
> On Tue, 17 Nov 1998, Dobes Vandermeer wrote:
> > Chris S Handley wrote:
> > > Question:
> > > Does anyone know how to find-out the port name OR port pointer for
> > > the sender of a message recieved using GetMsg()?
> >
> > Well, you can get the "reply port", which may or may not be the port the
> > message was sent from.  Otherwise, you should keep in mind that messages
> > are not sent FROM ports, so there is no way the PutMsg() could include a
> > port.
>
> It would be better to check the type of the message you have received
> (msg.ln.type). If it is a NT_REPLY message then you have NOT to reply it
> (this is a general rule). I don't know how ReplyMsg() behaves if no
> replying port is specified in the message, but that seems to be another
> good solution (if it works) as stated below.

Ah, thats an even better idea, but I have some questions:

1.When is NT_REPLY set automatically?  Just when using ReplyMsg()?
2.So, I assume I may alter msg.ln.type myself, right?
3.Out of interest, what other values can it take?

> > > Extra info:
> > > This is so I can avoid replying to a message sent to myself - unless I
> > > can do this, the following bit of code...
> > >
> > > Forbid()
> > > WHILE msg:=GetMsg(hostport) DO ReplyMsg(msg)
> > > Permit()
> >
> > Set the replyport in the message you SEND to yourself to NIL.  That will
> > prevent ReplyMsg from sending the message back.
>
> Once your program has sent the command, to know about it it must be in a
> wait() procedure. This means here the program MUST check which kind of
> message it has received, and, not answering to the NT_REPLY messages it
> will simply remove them from the list queue before closing the port.

Thanks for spotting this bug which I have inherited from the original
source I based my work on.  If ReplyMsg() sets NT_REPLY, then my
problems are solved!

> I should add then when answering messages that are not owned by our task
> the NY_REPLY type must be inserted in the msg.ln.type.


> I have created a quite complex but efficient way to handle Arexx messages
> for my BAH program, but I really can't remember here the details. Once at
> home I will have a look at the sources to see how I managed to handle
> reply messages.

That would be very interesting, maybe even very useful.

> Last solution is to create another private message port where you are
> going to send yourself all the messages you need. This way you know that
> all messages that are received by that port do no need a reply (they are
> already your own).

My whole problem is the user is just using some (OO) methods to
send/recieve arexx messages - and it ought to be perfectly valid to be
able to send messages to yourself (unlikely I know)...

Maybe you can answer another question on rexx?  How do I find out how
many arguments (0 to 16) are in the the rexxmsg.args[] structure?
Something to do with the "action field" (rexxmsg.action?) ?!

- --
Chris S Handley, BEng(Hons) - EMAIL:  Chris.S.Handley@btinternet.com
an Electronic Engineer (plus an overworked PowerAmiga nut & Anime fan)
- ----------------------------------------------------------------------
One proud owner of a Risc 240MHz PowerPC 603e, 66MHz bus, 32Mb 60ns
RAM, DMA Fast SCSI-II (10Mb/s), Gbs of HD, SyQuest 230Mb removable
drive, CD drive, Multi-Sync monitor...  all attached to an *AMIGA* :-)
@endnode

@node ID34_6 "Little ARexx port shutdown query (ID34_6)"
From: Chris.S.Handley@btinternet.com ("Chris S Handley")
Date: 19 Nov 98 00:30:51 +0000
Subject: Re: Little ARexx port shutdown query

Before dying of envy of Chris's Amiga Maxim Olivier-Adlhoch was able to say:
> Chris S Handley wrote:
> > Question:
> > Does anyone know how to find-out the port name OR port pointer for
> > the sender of a message recieved using GetMsg()?

> VERY SIMPLE... if the reply port of your message is the same as your port
used
> for receiving messages!

As I said to someone else:  How to I find out the reply port?  I am
looking for an answer like "rexxmsg.mn.ln.type" perhaps with
references to what calls produce the data object.

Most important: Also, how do I find my port?  Is it just the parameter
I give to (for example) "GetMsg(hostport)"?

> When building messages, it is an almost absolute neccessity for you to
> properly setup a replyport, otherwise you will never know when another
task
> has finished with your message.  thus if you recive a mail at your port
which
> has a replyport setup to your port, simply ignore it and move on to the
next.

> you might also want to make a port used for 'receiving', and check if the
> replyport is your other 'send' port.

Naah, my whole problem is letting the user send messages to himself.

> if you are not using replyports, well, I wonder how you are handling
> messages...

I believe that is what I am doing, but I am really just using a
massively tidied-up version of someone else's code.  Here's the bit
used to send a message:

- ---cut---
listnode:=hostport.ln
IF (rexxmsg:=CreateRexxMsg(hostport,'rexx',listnode.name))=NIL THEN RETURN
NIL
rexxargs:=rexxmsg.args

IF argstring:=CreateArgstring(command,StrLen(command))
        rexxargs[0]:=argstring
        rexxmsg.action:=RXCOMM OR flags
        rexxargs[15]:=unknownmsg

        Forbid()
        IF (targetport:=FindPort(targetname)) THEN
PutMsg(targetport,rexxmsg)
        Permit()

        IF targetport
               self.unconfirmed:=self.unconfirmed+1
               RETURN rexxmsg
        ENDIF
ELSE
- ---cut---

I assume CreateRexxMsg() automatically sets a reply port, as code
elsewhere waits for a NT_REPLYing message (which it can then decrease
the unconfirmed count).

> I hope the above makes sense to you... if not just explain what you do not
> understand... I'll go deeper

Maybe you can answer another question on rexx?  How do I find out how
many arguments (0 to 16) are in the the rexxmsg.args[] structure?
Something to do with the "action field" (rexxmsg.action?) ?!

Thanks

- --
Chris S Handley, BEng(Hons) - EMAIL:  Chris.S.Handley@btinternet.com
an Electronic Engineer (plus an overworked PowerAmiga nut & Anime fan)
- ----------------------------------------------------------------------
Windows95: noun, 32 bit extensions and a graphical shell for a 16 bit
patch to an 8 bit operating system originally coded for a 4 bit
microprocessor, written by a 2 bit company, that can't stand 1 bit of
competition.                                     [source: John Girvin]
Synonyms: Plug'n'Pay, MacintoshOS'85, Winblows, Windoze94.99998, ...
@endnode

@node ID34_7 "Little ARexx port shutdown query (ID34_7)"
Date: Fri, 20 Nov 1998 14:48:18 +0100 (MET)
From: mfontana@komodo.ing.unico.it (mauro fontana)
Subject: Re: Little ARexx port shutdown query

> My whole problem is the user is just using some (OO) methods to
> send/recieve arexx messages - and it ought to be perfectly valid to be
> able to send messages to yourself (unlikely I know)...
>
> Maybe you can answer another question on rexx?  How do I find out how
> many arguments (0 to 16) are in the the rexxmsg.args[] structure?
> Something to do with the "action field" (rexxmsg.action?) ?!

On the RKRM Libraries there is very little about Arexx, Arexx messages and
Arexx ports. I just know the essential that have allowed me to create my
Arexx utility thanks also to Marco Negri (Blacks Editor author) that has
helped me a lot. However, if you can wait till monday (I'm going home in
few minutes) I'll spot everything I can from RKRM manual and my Arexx code
to give you a description on how OS function works and should be used. Of
course as complete as I know.
However, if I remember right, NT_REPLY is automatically set by ReplyMsg()
function so no direct access to msg.mn.ln.type is needed. You just have to
check for it before answering not only your own messages but every one. As
you have experienced if you ignore that case, you can eneter an infinite
loop. The idea of the reply message is to give message owning to the
sender again. You already know that sent messages cannot be modified till
they are marked as NT_REPLY by the receiver, thus signaling it has used it
and it does not need it anymore. There's no sense in sending to him the
message again as it (if written correctly) would just reply it as soon as
it receive it as it is already marked as NT_REPLY.

About the number of arguments, I can't remember (or better, don't know
myself if I know about that), so I'll go and see any info about it.

M&F

@endnode

@node ID34_8 "Little ARexx port shutdown query (ID34_8)"
Date: Fri, 20 Nov 1998 13:27:26 -0500
From: max2@ordigraphe.com ("Maxim Olivier-Adlhoch")
Subject: Re: Little ARexx port shutdown query

eferences: <OUT-36536504.MD-1.0a.Chris.S.Handley@btinternet.com>
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit

Chris S Handley wrote:
>
> Before dying of envy of Chris's Amiga Maxim Olivier-Adlhoch was able to
say:

> As I said to someone else:  How to I find out the reply port?  I am
> looking for an answer like "rexxmsg.mn.ln.type" perhaps with
> references to what calls produce the data object.

the answer to your question is included in the tutorial...

I will explain exactly how EXEC messaging works...

This is aimed for beginners (I'm not hinting you are a beginner, but since
you do
not seem to have the RKM's you might not have the whole picture...)  IT is a
very
simplistic approach to understanding Exec Messaging.  I also include a
little
Metaphor which surprisingly is very conscise... Please do not be insulted
that I
have made this little 'tutorial' as a reply to your questions... I just
tough it
was in context and this type of question pops-up often I find...

AREXX is just a PROTOCOL (or you could call it an inherited class) using
exec.

Here we go...

THE MESSAGE PORT... (Thus receiving a message)
- --------------------
1- a signal bit is reserved.
(This is like a little doorbell which tells your system to respond) it is
set every
time a message arrives.  When a message arrives, it IS possible that the
signal is
ALREADY set (someone else buzzing the door) so your task is not aware of
this new
message... yet.

2- a Message Port is Allocated
(This like the door to which the doorbell is associated.) when a message
arrives,
he sets the signal to on, so then you must go to the door, and open it to
see if
someone is there...

3- Get a Message
(you answer to the first person in front of the door) Here you GetMsg() to
the
first message waiting on the Port's list.  exec message is FIFO (First In
First
Out) this message is also REMOVED from the port's message list... so don't
loose
your pointer...

4- You Handle the MEssage
(You discuss, have tea, shoot the person in the head ;)  Here is where you
actually
interact with the message's information.  You can handle it anyway you want
but you
should make this as fast as possible.

5- You reply...
(you say "goodbye, hope you have a nice trip back"  the person looks at the
map in
his hands and goes to another door...with a big red cross on his map) Here
you will
use ReplyMsg().  What happens here is simple.  I am not sure if NT_REPLY is
automatically set by ReplyMsg (I do not have my RKMs with me at work...) but
this
is where it should be done.  IF the actuall MESSAGE had a reply port setup
in its
structure it will SendMsg() to it.  I'll explain more in SENDING A
MESSAGE...

6- Next!
(you check if there is someone else at the door.. )  simply, a new iteration
through your loop (do 3-5 until 7 occurs)

7- No One left...
(There is no one left at the door... I'm going back to doin nothing... like
watching TV) Here you go back to Wait() or WaitPort() state. (usually this
is also
a loop of some kind)

SENDING A MESSAGE
- -------------------
1- You allocate it
(the litle new born is delivered... still innocent and dumb) You reserve
reserve
memory space for your message structure.

2- You Initialize it
(The child becomes an adult as he understand what is his missin in life and
what is
his goal)  Here you simply set the various fields of your structure.

2.a- You give it a reply port address...
(the Adult buys himself a house where he knows he'll always be safe).  IF
you have
allocated a port in the Sending Application, You SHOULD set it in the
msg.replyport
field of your message... the exact syntax is probably wrong (Just so a
ShowModule
on the mn OBJECT and you'll see it).  Then the port will be able to tell you
where
to go back when you're finished in your duty.

3. Find the port to go to...
(You hand out a map to your guy so he know where to go) Simply do a
FindPort() if
it is public port and then it is good habit to do a Forbid/Permit Pair if
you
cannot be guaranteed that the port will be valid when next step occurs...

4. Send the MEssage
you set off on your journey walking along until you end up at the
destination
adrress and Door... which you press on the doorbell ;) you simply call
SendMsg() on
it ... continue to MESSAGE PORTS

In your case, simply ALWAYS set your mn.replyport when you send a
message.... in
fact Everybody should implement this all the time... otherwise you cannot
know if
the other task has finished with your message...

This is a simple guide for beginners to understand Exec Message Passing.
AREXX
uses the same system (internally) but with a dedicated Message structure.
To know
how big or the number of arguments, I'd tell you to snoop the various
modules
involved with the actuall messaging... The Arexxmessage structure will tell
you,
otherwise I really do not know.

> I believe that is what I am doing, but I am really just using a
> massively tidied-up version of someone else's code.  Here's the bit
> used to send a message:
>
> ---cut---
> listnode:=hostport.ln
> IF (rexxmsg:=CreateRexxMsg(hostport,'rexx',listnode.name))=NIL THEN RETURN
NIL
> rexxargs:=rexxmsg.args
>
> IF argstring:=CreateArgstring(command,StrLen(command))
>         rexxargs[0]:=argstring
>         rexxmsg.action:=RXCOMM OR flags
>         rexxargs[15]:=unknownmsg
>
>         Forbid()
>         IF (targetport:=FindPort(targetname)) THEN
PutMsg(targetport,rexxmsg)
>         Permit()
>
>         IF targetport
>                self.unconfirmed:=self.unconfirmed+1
>                RETURN rexxmsg
>         ENDIF
> ELSE
> ---cut---
>
> I assume CreateRexxMsg() automatically sets a reply port,
Just check if the message included in rexxmsg includes a mn.replyport
pointer = to
your hostport...

> Maybe you can answer another question on rexx?  How do I find out how
> many arguments (0 to 16) are in the the rexxmsg.args[] structure?
> Something to do with the "action field" (rexxmsg.action?) ?!

I'm not very Skilled in AREXX specifics myself... yet

MAxim
- --
- ----------------------
Maxim Olivier-Adlhoch
- ----------------------
max2@ordigraphe.com
- ----------------------
Are you a programer... Then Visit STEEL(c) Web Site  before you're left
in the cold...
http://www.geocities.com/SiliconValley/Network/7002/steel_welcome.html
@endnode

@node ID34_9 "Little ARexx port shutdown query (ID34_9)"
Date: Mon, 23 Nov 1998 13:05:40 +0100 (MET)
From: mfontana@komodo.ing.unico.it (mauro fontana)
Subject: Re: Little ARexx port shutdown query

> 5- You reply...  (you say "goodbye, hope you have a nice trip back"  the
> person looks at the map in his hands and goes to another door...with a
> big red cross on his map) Here you will use ReplyMsg().  What happens
> here is simple.  I am not sure if NT_REPLY is automatically set by
> ReplyMsg (I do not have my RKMs with me at work...) but this is where it
> should be done.  IF the actuall MESSAGE had a reply port setup in its
> structure it will SendMsg() to it.  I'll explain more in SENDING A
> MESSAGE...

I have looked at my RKM and the result is yes: ReplyMsg() automatically
sets NT_REPLYMSG (<- right flag spelling).

Messages that have to be answered are those that contain NT_MESSAGE set in
their ln.type field. This is automatically set by PutMsg(). The other last
option NT_UNKNOWN should not be answered.

> 4. Send the MEssage you set off on your journey walking along until you
> end up at the destination adrress and Door... which you press on the
> doorbell ;) you simply call SendMsg() on it ... continue to MESSAGE
> PORTS

That should be PutMsg()

> This is a simple guide for beginners to understand Exec Message Passing.
> AREXX uses the same system (internally) but with a dedicated Message
> structure.  To know how big or the number of arguments, I'd tell you to
> snoop the various modules involved with the actuall messaging... The
> Arexxmessage structure will tell you, otherwise I really do not know.

I think there are not ways to know how many "slots" in the Arexx message
are used. But this is not a problem. You can just check them all to know
if they contain something useful.
However the command parameters are stored in the arg[0] together with the
command name. You have to parse the cmmand with ReadArgas() or ReadItem()
functions o know what are the options (if available) of the command you
have received.

This may help you somehow, but maybe you already know this:

To delete an Arexx message once it has returned from the remote hosrport
use:
DeleteArsString(msg.result2)
ClearRexxMsg(msg, 16) -> This clears all the 16 slots
DeleteRexxMsg(msg)

msg.result1 is always a value that contains a return value
msg.result2 is always a pointer to a string that may returns the anwer of
            the command.

To have valid results in those fields you have to set the RXFF_RESULT flag
in your Arexx message before you sent it to the host.

Hope this is going to help you.

M&F

@endnode

@node ID34_10 "Little ARexx port shutdown query (ID34_10)"
From: Chris.S.Handley@btinternet.com ("Chris S Handley")
Date: 23 Nov 98 18:14:58 +0000
Subject: Re: Little ARexx port shutdown query

Before being bought by MicroSoft, mauro fontana was able to say:
> > My whole problem is the user is just using some (OO) methods to
> > send/recieve arexx messages - and it ought to be perfectly valid to be
> > able to send messages to yourself (unlikely I know)...

> On the RKRM Libraries there is very little about Arexx, Arexx messages and
> Arexx ports. I just know the essential that have allowed me to create my
> Arexx utility thanks also to Marco Negri (Blacks Editor author) that has
> helped me a lot. However, if you can wait till monday (I'm going home in
> few minutes) I'll spot everything I can from RKRM manual and my Arexx code
> to give you a description on how OS function works and should be used. Of
> course as complete as I know.

I can wait! ^_^

> However, if I remember right, NT_REPLY is automatically set by ReplyMsg()
> function so no direct access to msg.mn.ln.type is needed. You just have to
> check for it before answering not only your own messages but every one. As
> you have experienced if you ignore that case, you can eneter an infinite

With the module I'm using it seems to want NT_REPLYMSG not NT_REPLY; I
guess you just forgot right?

Strangely, using this does *not* work (maybe ReplyMsg() doesn't set
NT_REPLYMSG automatically) :

- --cut--
WHILE msg:=GetMsg(hostport)
    IF listnode.type<>NT_REPLYMSG THEN ReplyMsg(msg)
ENDWHILE
- --cut--

Anyone know why this don't work, when it ought to?

However - from a hint from another email, the following *does* work...

- --cut--
WHILE msg:=GetMsg(hostport)
    IF msg.replyport<>hostport THEN ReplyMsg(msg)
ENDWHILE
- --cut--

So, my main problem is solved now, without any nasty kludge, but I'd
still like to know how you can know the number of Arguments...

> loop. The idea of the reply message is to give message owning to the
> sender again. You already know that sent messages cannot be modified till
> they are marked as NT_REPLY by the receiver, thus signaling it has used it
> and it does not need it anymore. There's no sense in sending to him the
> message again as it (if written correctly) would just reply it as soon as
> it receive it as it is already marked as NT_REPLY.

- --
Chris S Handley, BEng(Hons) - EMAIL:  Chris.S.Handley@btinternet.com
an Electronic Engineer (plus an overworked PowerAmiga nut & Anime fan)
- ----------------------------------------------------------------------
"One of the laws of nature," Gorden said, "is that half the people
have got to be below average".
"For a Gaussian distribution, yeah," Cooper said.  "Sad though."
                [amusing except from Gregory Benford's book Timescape]
@endnode

@node ID34_11 "Little ARexx port shutdown query (ID34_11)"
From: Chris.S.Handley@btinternet.com ("Chris S Handley")
Date: 23 Nov 98 18:13:08 +0000
Subject: Re: Little ARexx port shutdown query

Before being bought by MicroSoft, Maxim Olivier-Adlhoch was able to say:
> Chris S Handley wrote:
> > Before dying of envy of Chris's Amiga Maxim Olivier-Adlhoch was able to
say:

> > As I said to someone else:  How to I find out the reply port?  I am
> > looking for an answer like "rexxmsg.mn.ln.type" perhaps with
> > references to what calls produce the data object.
>
> the answer to your question is included in the tutorial...

Thanks - this cleared-up several things which I had to guess at :-)

The biggest worry I had was whether it was ok to GetMsg() without
having Wait()ed first.

<snip!>
> 2.a- You give it a reply port address...
> (the Adult buys himself a house where he knows he'll always be safe).  IF
you have
> allocated a port in the Sending Application, You SHOULD set it in the
msg.replyport

It seems that CreateRexxMsg() sets the .replyport automatically (not
so suprising since your own port is one of it's arguments!).

> field of your message... the exact syntax is probably wrong (Just so a
ShowModule
> on the mn OBJECT and you'll see it).  Then the port will be able to tell
you where
> to go back when you're finished in your duty.

I haven't really used ShowModule before - Doh!  This was quite
enlightening using it on Emodules:Exec/ports.m|nodes.m &
:Rexx/storage.m .  I should be able to get by on much less docs now:-)

> > Maybe you can answer another question on rexx?  How do I find out how
> > many arguments (0 to 16) are in the the rexxmsg.args[] structure?
> > Something to do with the "action field" (rexxmsg.action?) ?!
>
> I'm not very Skilled in AREXX specifics myself... yet

I think you can't actually know - I guess that either you must check
every argument (& may read if not NIL), *or* you read succesive
arguments until you get a NIL.  The latter sounds more likely, but I'd
like someone to confirm this...

BTW, with the modules I'm using, the 'don't reply' constant is called
NT_REPLYMSG not NT_REPLY.

- --
Chris S Handley, BEng(Hons) - EMAIL:  Chris.S.Handley@btinternet.com
an Electronic Engineer (plus an overworked PowerAmiga nut & Anime fan)
- ----------------------------------------------------------------------
"One of the laws of nature," Gorden said, "is that half the people
have got to be below average".
"For a Gaussian distribution, yeah," Cooper said.  "Sad though."
                [amusing except from Gregory Benford's book Timescape]
@endnode

@node ID34_12 "Little ARexx port shutdown query (ID34_12)"
Date: Tue, 24 Nov 1998 17:17:34 -0500
From: max2@ordigraphe.com ("Maxim Olivier-Adlhoch")
Subject: Re: Little ARexx port shutdown query

Chris S Handley wrote:
> However - from a hint from another email, the following *does* work...
>
> --cut--
> WHILE msg:=GetMsg(hostport)
>     IF msg.replyport<>hostport THEN ReplyMsg(msg)
> ENDWHILE
> --cut--

/* Do not forget to Free or re-use the msg otherwise you get a nasty memory
leak...>
*/
In the case of a standard exec msg, it depends on the way you actually
allocated your
msg, but you'll get the idea:

WHILE msg:=GetMsg(hostport)
    IF msg.replyport<>hostport THEN ReplyMsg(msg) ELSE FreeVec(msg)
ENDWHILE

- -|\/|axim

- --
- ----------------------
Maxim Olivier-Adlhoch
- ----------------------
max2@ordigraphe.com
- ----------------------
Are you a programer... Then Visit STEEL(c) Web Site  before you're left
in the cold...
http://www.geocities.com/SiliconValley/Network/7002/steel_welcome.html
@endnode

@node ID34_13 "Little ARexx port shutdown query (ID34_13)"
Date: Wed, 25 Nov 1998 09:19:39 +0100 (MET)
From: subvcbhd@calvados.zrz.TU-Berlin.DE (Henk Jonas)
Subject: Re: Little ARexx port shutdown query

On 23 Nov 1998, Chris S Handley wrote:

> Strangely, using this does *not* work (maybe ReplyMsg() doesn't set
> NT_REPLYMSG automatically) :
>=20
> --cut--
> WHILE msg:=3DGetMsg(hostport)
>     IF listnode.type<>NT_REPLYMSG THEN ReplyMsg(msg)
> ENDWHILE
> --cut--
Better Not(listnode.type AND NT_REPLYMSG) ?

Henk
- ----------------------------------------------------------------
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

@endnode

@node ID34_14 "Little ARexx port shutdown query (ID34_14)"
From: Chris.S.Handley@btinternet.com ("Chris S Handley")
Date: 24 Nov 98 23:25:46 +0000
Subject: Re: Little ARexx port shutdown query

Before being bought by MicroSoft, mauro fontana was able to say:
> This may help you somehow, but maybe you already know this:

> To delete an Arexx message once it has returned from the remote hosrport
> use:
> DeleteArsString(msg.result2)
> ClearRexxMsg(msg, 16) -> This clears all the 16 slots
> DeleteRexxMsg(msg)

What does ClearRexxMsg() do exactly?  Must it be used?  I don't use
it:

   DeleteArgstring(rexxargs[0])
   DeleteRexxMsg(rexxmsg); rexxmsg:=NIL

> msg.result1 is always a value that contains a return value
> msg.result2 is always a pointer to a string that may returns the anwer of
>             the command.
>
> To have valid results in those fields you have to set the RXFF_RESULT flag
> in your Arexx message before you sent it to the host.

Any idea what the RXCOMM flag does?  This was used of instead of
RXFF_RESULT, when there were no useful stuff in .result1/2 .

> Hope this is going to help you.

Wow! ;^)

- --
Chris S Handley, BEng(Hons) - EMAIL:  Chris.S.Handley@btinternet.com
an Electronic Engineer (plus an overworked PowerAmiga nut & Anime fan)
- ----------------------------------------------------------------------
"One of the laws of nature," Gorden said, "is that half the people
have got to be below average".
"For a Gaussian distribution, yeah," Cooper said.  "Sad though."
                [amusing except from Gregory Benford's book Timescape]
@endnode



@node ID35_0 "Rexx Scripts (ID35_0)"
From: stv@minorisa.es ("Esteve Boix")
Date: Wed, 18 Nov 1998 09:22:56 +0100
Subject: Rexx Scripts

Hi !

I'm writing a program that needs to execute some rexx scripts with some
arguments.

I use the sendRexxMsg() proc I found in a program of the "Src" dir of the
AmigaE distribution. It works, but while I can run the script
"rexx:script1.rexx", I cannot run "rexx:script2.rexx 60 60" -for example-.
I run the scripts by sending the name of the script and it's arguments
together in a string to the "REXX" port.
I've tried all kind of combinations with " and ', but nothing...

Anyone has an example of how to make this work ?

Regards,
Esteve

- ---
Esteve Boix - stv@minorisa.es - http://www2.minorisa.es/~stv
@endnode

@node ID35_1 "Rexx Scripts (ID35_1)"
From: jason@fsel.com ("Jason Hulance")
Subject: RE: Rexx Scripts
Date: Wed, 18 Nov 1998 09:18:04 -0000

Esteve Boix wrote:

> I use the sendRexxMsg() proc I found in a program of the "Src" dir of the
> AmigaE distribution.

That was created for Explorer to use.  It was meant to be an extension to
the ARexx module that Wouter wrote, but he didn't get round to integrating
it, I guess.

> It works, but while I can run the script "rexx:script1.rexx", I cannot
> run "rexx:script2.rexx 60 60" -for example-.
> I run the scripts by sending the name of the script and it's arguments
> together in a string to the "REXX" port.
> I've tried all kind of combinations with " and ', but nothing...
>
> Anyone has an example of how to make this work ?

Hmm... it jolly well ought to work.  I can't remember how you send
arguments to scripts, but sendRexxMsg() certainly works for functions
(and their arguments).  It may be that, in this case, the ARexx message
needs more ArgString arguments.  Anyone know?

Cheers!

- --
Your numbers are 5, 3, 1, 8, 4 and 2.  The target is 777.
The conundrum for today is "aeacntctp"
======================================================================
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

@endnode

@node ID35_2 "Rexx Scripts (ID35_2)"
From: stv@minorisa.es ("Esteve Boix")
Date: Wed, 18 Nov 1998 18:01:44 +0100
Subject: RE: Rexx Scripts

> > It works, but while I can run the script "rexx:script1.rexx", I cannot
> > run "rexx:script2.rexx 60 60" -for example-. I run the scripts by
> > sending the name of the script and it's arguments together in a string
> > to the "REXX" port. I've tried all kind of combinations with " and ',
> > but nothing...
>
> Hmm... it jolly well ought to work.  I can't remember how you send
> arguments to scripts, but sendRexxMsg() certainly works for functions (and
> their arguments).  It may be that, in this case, the ARexx message needs
> more ArgString arguments.  Anyone know?

Believe it or not, the problem was the length of the path (the full path) of
the
rexx program... It seems to be limited to 60 chars. Can anyone verify this ?
In a normal shell:

1> rx path_longer_than_60_chars.rexx

...doesn't work... ???

Regards,
Esteve

- ---
Esteve Boix - stv@minorisa.es - http://www2.minorisa.es/~stv
@endnode



@node ID36_0 "MUI, Arexx And Listviews (ID36_0)"
Date: Wed, 18 Nov 1998 05:03:18 -0800 (PST)
From: digitaldave98@yahoo.com (David Arbuthnot)
Subject: MUI, Arexx And Listviews

Hi All,

      I am currently developing a program which uses MUI and requires
2 things before i can alpha-test it and those two things are (1). An
Arexx Port (2). Some Listviews

(1). Arexx Troubles

   I have two problems with Arexx Ports and MUI

   (a. Multipule Commands
       How Do i Do It

   (b. Commands with arguments
       Am I Right In Thinking That I Use
MUIA_Application_RexxMsg Attribute.
       if so i need help with it

(2). MUI Listviews

   I Have also a couple of problems with listviews

   I can create a list view that hold static data
   (Data that don`t change) but when i try to add data
   i have the problem that if i click on the last item    to be added
to the list when i click on another item    it is replaced by the last
item to be added.

   Also How DO I Use The MUIA_List_DisplayHook    Attribute to format
data into columns and the like

If you can help i would be grateful



==
< Digital Dave 98 >

(Or For those of you that read in Hex)

$60326873717384657632686586693257563262

E + MUI = Easier GUI coding
_________________________________________________________
DO YOU YAHOO!?
Get your free @yahoo.com address at http://mail.yahoo.com

@endnode

@node ID36_1 "MUI, Arexx And Listviews (ID36_1)"
From: frank@cc86.org (Frank Weber)
Date: Wed, 18 Nov 1998 17:10:06 +0200
Subject: Re: MUI, Arexx And Listviews

Hello David,

On 18-Nov-98, you wrote:

> Hi All,
>
>      I am currently developing a program which uses MUI and requires
> 2 things before i can alpha-test it and those two things are (1). An
> Arexx Port (2). Some Listviews
>
> (2). MUI Listviews
>
>   I Have also a couple of problems with listviews
>
>   I can create a list view that hold static data
>   (Data that don`t change) but when i try to add data
>   i have the problem that if i click on the last item    to be added
> to the list when i click on another item    it is replaced by the last
> item to be added.

Don't use static data, it always points to the same memory area.

Use AllocVec for each entry instead.

Example:

...

OBJECT myentry

    data1:PTR TO CHAR
    data2:PTR TO CHAR

ENDOBJECT

DEF entry:PTR TO myentry

entry:=AllocVec(SIZEOF myentry, MEMF_PUBLIC OR MEMF_CLEAR)

entry.data1:=AllocVec( [required size], MEMF_PUBLIC OR MEMF_CLEAR)
AstrCopy(entry.data1, 'Teststring')

entry.data2:=AllocVec( [required size], MEMF_PUBLIC OR MEMF_CLEAR)
AstrCopy(entry.data2, 'Teststring2')

doMethodA(list, [MUIM_List_InsertSingle, entry, MUIV_List_Insert_Bottom])

And so on for every entry.

>   Also How DO I Use The MUIA_List_DisplayHook    Attribute to format
> data into columns and the like

The example above has already been designed for two columns.

First, set MUIA_List_Format to "," for two cols.

Then set up a display hook as in the attached example. It uses NList class,
but shows the way, too.

Your display func would be:

PROC displayfunc(hook,dest:PTR TO LONG,entry:PTR TO LONG)
  IF entry            -> Data entry?
    dest[0]:=entry[0]   -> Column1
    dest[1]:=entry[1]   -> Column2
  ELSE
    dest[0]:='Col1'  -> Show title
    dest[1]:='Col2'
  ENDIF
ENDPROC

Just try around a little with it. If you have any questions, just ask :-)

Bye

Frank

- --
Frank Weber          E-Mail: frank@cc86.org
74076 Heilbronn
PGP key available on request

Amiga Shareware:   · CDCat    · AFiloFaxPro    · AmigaTrainer    · Cheater

CDCat Support site: http://www.amigaworld.com/support/cdcat

aMIGA rULZ :-)

@endnode



@node ID37_0 "Debug messages (ID37_0)"
From: misha@femina.com.pl (Michal Durys)
Date: Wed, 18 Nov 1998 13:03:43 +0200
Subject: Debug messages

Hi List!

My idea for debug messages was to prepare a set of macros. So I did. But
I wanted to know which procudre generates each message. I decided to
assign a local variable called dbgprocname to each procedure which holds
the it's name. I tried to put it in one macro like this:

#define dbgname(name) DEF dbgprocname \
dbgprocname:=name

But it seems that E desn't allow that. I tried many different ways but I
didn't manage to achieve my aim. So I'd like to know if it's possible to
put a variable definition and assign a string to it in one macro? At the
moment I did this in a bit different way. I declared dbgprocname as a
global variable and I assign a value to it in each procedure, but this
solution is not perfect and I'm to lazy to do it without macros. If any
one is interested here are my macros:

- -> debug functions
#define DEBUG

#ifdef DEBUG
DEF dbgprocname
#define dbgname(name) dbgprocname:=name
#define dbg(text,arg) PrintF('\s: '+text,dbgprocname,arg)
#define qdbg(text) PrintF('\s: '+text+'\n',dbgprocname)
#endif

#ifndef DEBUG
#define dbgname(name)
#define dbg(text,args)
#define qdbg(text)
#endif
#define DBG_DONE 'Done!'

- --
Michal Durys                                     misha@femina.com.pl

Only Amiga makes it possible
http://www.amiga.com

@endnode

@node ID37_1 "Debug messages (ID37_1)"
Date: Wed, 18 Nov 1998 13:39:40 +0000 (BST)
From: sac@csd.abdn.ac.uk (Stuart Caie)
Subject: Re: Debug messages

On Wed, 18 Nov 1998, Michal Durys wrote:

=>I wanted to know which procudre generates each message.

Seeing as you always have to write the message inside some procedure,
why not just write the procedure's name in the message?

Stuart

@endnode

@node ID37_2 "Debug messages (ID37_2)"
From: misha@femina.com.pl (Michal Durys)
Date: Thu, 19 Nov 1998 15:30:02 +0200
Subject: Re: Debug messages

Hello Stuart!
On 18-Lis-98 you generated such output:
> =>I wanted to know which procudre generates each message.

> Seeing as you always have to write the message inside some procedure,
> why not just write the procedure's name in the message?

I'm to lazy to add procedure name to each message. At least in source
code which is about 170 KB long (no binary trash, just plain code).
And I know I could define local variable dbgprocname and assign a value
to it by hand but in this case I would have a lot of unused variables.
Once again I know I could use a #ifdef #endif pair to exclude this part
of code when DEBUG is not defined but as I said I'm too lazy for that.

So, if you have any idea how to define a local variable and assign a
string to it in one macro call please share it with me.

Bye!
- --
Michal Durys                                     misha@femina.com.pl

Only Amiga makes it possible
http://www.amiga.com

@endnode



@node ID38_0 "MUI Listviews And MUI Arexx (ID38_0)"
Date: Wed, 18 Nov 1998 08:21:09 -0800 (PST)
From: digitaldave98@yahoo.com (David Arbuthnot)
Subject: MUI Listviews And MUI Arexx

Hi All,

I Have a couple of problems that i really need help with.

(1)
I Got the MUI Developer files for C so i could look at the autodocs
for the Attributes and Methods and decide that it was about time my
programs got some arexx ports. So i tried and sucsessfully got a
simple arexx command to work but then i realised what use is a command
with no arguments thats what an MUI gui is for
so i tried and tried and i am now going insane tring to figure ouit
how to use multiple arexx comands and also arexx commands with
arguments.

(2)

I really need some help also (Need a lot of help don`t I) with
listviews i can get a listview on to my gui and use a PTR TO LONG var
for its data i can also do it using E-Lists but the problems start
when i add items to the list when i click on the last item added to
the list and then click on another the item i just clicked on becomes
the last item added to the list how do i overcome this problem. also
how do i use MUIA_List_DisplayHook i know i have to use a CallBack
Hook which is no problem but i cant figure out how to put my data into
the columns.

Hope someone can help if not i`ll stick to strings and textObjects

Seeya
========================================================
=
=

==
< Digital Dave 98 >

(Or For those of you that read in Hex)

$60326873717384657632686586693257563262

E + MUI = Easier GUI coding
_________________________________________________________
DO YOU YAHOO!?
Get your free @yahoo.com address at http://mail.yahoo.com

@endnode



@node ID39_0 "MUI gadget/group cycling (ID39_0)"
Date: Thu, 19 Nov 1998 15:48:02 -0500
From: max2@ordigraphe.com ("Maxim Olivier-Adlhoch")
Subject: MUI gadget/group cycling

does anyone know how to handle cycle chains in MUI?

I'd also like to know how I can 'throw' a cycle 'event' in order to let
MUI activate its next gadget.

I'd like to add key handling to some custom gads but I must know which
gadget is 'Active' otherwise I'd have to detect if I'm currently an
active gadget.

Oterwise I'll have to make an 'active' detection mechanism of my own.
This can be a real pain to implement... it adds a lot of IFs... to an
input handler...

- -MAxim

- --
- ----------------------
Maxim Olivier-Adlhoch
- ----------------------
max2@ordigraphe.com
- ----------------------
Are you a programer... Then Visit STEEL(c) Web Site  before you're left
in the cold...
http://www.geocities.com/SiliconValley/Network/7002/steel_welcome.html
@endnode

@node ID39_1 "MUI gadget/group cycling (ID39_1)"
Subject: Re: MUI gadget/group cycling
From: SCHULZJAN@dame.de (Jan Hendrik Schulz)
Date: Fri, 20 Nov 1998 09:00:06 +0100

Maxim Olivier-Adlhoch wrote:

> does anyone know how to handle cycle chains in MUI?

Set MUIA_CycleChain to 1 for every object that you want to have in your
chain.

> I'd also like to know how I can 'throw' a cycle 'event' in order to let
> MUI activate its next gadget.

set(window, MUIA_Window_ActiveObject, MUIV_Window_ActiveObject_Next)

> I'd like to add key handling to some custom gads but I must know which
> gadget is 'Active' otherwise I'd have to detect if I'm currently an
> active gadget.

get(window, MUIA_Window_ActiveObject, {activeObj})

- --
 Bye...___  ______  ______
   __ /  /\/  /  /\/   __/\ ----------------------------------------
  / (/  / /     / /__   /\/ Jan Hendrik Schulz - Hamburg - Germany /
 (_____/ /__/__/ /_____/ /            schulzjan@dame.de           /
  \____\/\__\__\/\_____\/    schulz_j@informatik.fh-hamburg.de   /
   --------------------------------------------------------------

@endnode

@node ID39_2 "MUI gadget/group cycling (ID39_2)"
Date: Fri, 20 Nov 1998 17:26:15 -0500
From: max2@ordigraphe.com ("Maxim Olivier-Adlhoch")
Subject: Re: MUI gadget/group cycling

Hi Jan,

You wrote:

> Set MUIA_CycleChain to 1 for every object that you want to have in your
> chain.

:) that was the only part I was aware of...

>
> > I'd also like to know how I can 'throw' a cycle 'event' in order to let
> > MUI activate its next gadget.
>
> set(window, MUIA_Window_ActiveObject, MUIV_Window_ActiveObject_Next)

I was trying to find a tag called MUIA_xxxx_CycleNext or something like
that...
there are so many it becomes hard to find them sometimes ;)

>
> > I'd like to add key handling to some custom gads but I must know which
> > gadget is 'Active' otherwise I'd have to detect if I'm currently an
> > active gadget.
>
> get(window, MUIA_Window_ActiveObject, {activeObj})

Cool,

I did not try cycling yet, as I write this, but Does MUI provide a
highlighting
mechanism when cyling objects or is a cursor the only visual reference?

Also, do All standard gadgets Support cycling? (For example does an button
have a
visual clue that pressing enter would activate it, if it is supported at
all?

Thanks for the help.

- -Maxim

- --
- ----------------------
Maxim Olivier-Adlhoch
- ----------------------
max2@ordigraphe.com
- ----------------------
Are you a programer... Then Visit STEEL(c) Web Site  before you're left
in the cold...
http://www.geocities.com/SiliconValley/Network/7002/steel_welcome.html
@endnode



@node ID40_0 "Old ideas (was: Lacking features) (ID40_0)"
From: sanric@ronet.it (Riccardo Santato)
Date: Fri, 20 Nov 1998 19:38:06 +0100
Subject: Old ideas (was: Lacking features)

Hello Maxim

Il 13-Nov-98, Maxim Olivier-Adlhoch scrisse:

>
> I guess it depends on his avalable time or the search for a valid person
which
> would handle such a task...

Some time ago I suggested the idea of a new totally free AmigaE Compiler,
called *"FreE"* . This idea came to me basically because in the actual
state...

1) EC doesn't generate neither code for PPC nor assembly source that can be
compiled with other assemblers (like PhxAss)

2) EC doesn't optimize

3) EC is totally typeless  and has several problems in creating libraries

4) EC doesn't support FPU and UNSIGNED LONGs

... and many more !  :-((

I launched the idea on the Mailing List, but only 3 (!!!!) persons answered
my
call, and my opinion is that we cannot do a thing if we aren't in a bigger
number. IMHO to join ourselves is the only way to make E survive, even
because, if we do so...

A)    The language will become free for every Amiga user that wants to learn
something about his computer !

B)    More people := less errors and mistakes (everyone can hunt for bugs)

C)    More people := speeder implementation of the compiler !

Maybe I'm totally wrong , but it seems to me that multi-made software is the
stablest software at all  (check for Linux and GCC !!).
If the idea is interesting, we can join. Personally I am not so able in
programming (almost a newbie !) but I can create HTML pages, be a supervisor
for the entire project, write docs.
As John Lennon wrote...
*YOU MAY SAY I'M A DREAMER BUT I'M NOT THE ONLY ONE...* /(Imagine)/

======================================================
Santato Riccardo

                               sanric@ronet.it
                               www.geocities.com/SunsetStrip/Stage/6141/
=====================================================



@endnode

@node ID40_1 "Old ideas (was: Lacking features) (ID40_1)"
From: carl.drougge@2.sbbs.se (Carl Drougge)
Date: Sat, 21 Nov 1998 22:11:43 +0100
Subject: Re: Old ideas (was: Lacking features)

Den 20-Nov-98, skrev Riccardo Santato:

>Some time ago I suggested the idea of a new totally free AmigaE Compiler,
>called *"FreE"* . This idea came to me basically because in the actual
>state...

>1) EC doesn't generate neither code for PPC nor assembly source that can be
>compiled with other assemblers (like PhxAss)

>2) EC doesn't optimize

>3) EC is totally typeless  and has several problems in creating libraries

>4) EC doesn't support FPU and UNSIGNED LONGs

>... and many more !  :-((

>I launched the idea on the Mailing List, but only 3 (!!!!) persons answered
my
>call, and my opinion is that we cannot do a thing if we aren't in a bigger
>number. IMHO to join ourselves is the only way to make E survive, even
>because, if we do so...

>A)    The language will become free for every Amiga user that wants to
learn
>something about his computer !

>B)    More people := less errors and mistakes (everyone can hunt for bugs)

>C)    More people := speeder implementation of the compiler !

>Maybe I'm totally wrong , but it seems to me that multi-made software is
the
>stablest software at all  (check for Linux and GCC !!).
>If the idea is interesting, we can join. Personally I am not so able in
>programming (almost a newbie !) but I can create HTML pages, be a
supervisor
>for the entire project, write docs.

I'll be happy to help in such a project. My "features" as a programmer:

I know E, pretty well.
I know a little 68k asm
I know enough C/C++ for simpler programms
I understand pointers and such well. (And most people seem not to.)
I learn quite easily.

Something like that. (I didn't answer last time because I wasn't on the
list)

@endnode

@node ID40_2 "Old ideas (was: Lacking features) (ID40_2)"
From: hassel@kuai.se ("Anders Hasselqvist")
Subject: Re: Old ideas (was: Lacking features)
Date: Sat, 21 Nov 1998 22:33:11 +0100

Riccardo Santato wrote:

>
>Some time ago I suggested the idea of a new totally free AmigaE =
Compiler,
>called *"FreE"* . This idea came to me basically because in the actual
>state...

>

Isn't Gregor Goldbach doing something like this already?

Bye,

Anders Hasselqvist
hassel@acc.umu.se

@endnode

@node ID40_3 "Old ideas (was: Lacking features) (ID40_3)"
From: frosetti@hotmail.com ("Dennis Andersson")
Subject: Re: Old ideas (was: Lacking features)
Date: Mon, 23 Nov 1998 03:26:29 PST

>>
>> I guess it depends on his avalable time or the search for a valid
person
>which
>> would handle such a task...
>
>Some time ago I suggested the idea of a new totally free AmigaE
Compiler,
>called *"FreE"* . This idea came to me basically because in the actual
>state...
>
>1) EC doesn't generate neither code for PPC nor assembly source that
can be
>compiled with other assemblers (like PhxAss)
>
>2) EC doesn't optimize
>
>3) EC is totally typeless  and has several problems in creating
libraries
>
>4) EC doesn't support FPU and UNSIGNED LONGs
>
>... and many more !  :-((
>
>I launched the idea on the Mailing List, but only 3 (!!!!) persons
answered my
>call, and my opinion is that we cannot do a thing if we aren't in a
bigger
>number. IMHO to join ourselves is the only way to make E survive, even
>because, if we do so...
>
>A)    The language will become free for every Amiga user that wants to
learn
>something about his computer !
>
>B)    More people := less errors and mistakes (everyone can hunt for
bugs)
>
>C)    More people := speeder implementation of the compiler !
>

Shouldn't that be = instead of := (or maybe == :)

>Maybe I'm totally wrong , but it seems to me that multi-made software
is the
>stablest software at all  (check for Linux and GCC !!).
>If the idea is interesting, we can join. Personally I am not so able in
>programming (almost a newbie !) but I can create HTML pages, be a
supervisor
>for the entire project, write docs.

I'm willing to help in any way possible.
I know some E, some html, some 68k asm, some C
and some other stuff.

>As John Lennon wrote...
>*YOU MAY SAY I'M A DREAMER BUT I'M NOT THE ONLY ONE...* /(Imagine)/
>
As Marilyn Manson wrote...
*TAKE YOUR HATRED OUT ON ME...* /(Can't remeber the name of the song)/

Dennis

______________________________________________________
Get Your Private, Free Email at http://www.hotmail.com
@endnode

@node ID40_4 "Old ideas (was: Lacking features) (ID40_4)"
Date: Mon, 23 Nov 1998 15:12:28 +0100
From: ss37@irz301.inf.tu-dresden.de (Sven Steiniger)
Subject: Re: Old ideas (was: Lacking features)

The best thing would be writing an frontend for
gcc. This would add portability and an excellent
optimizer but reduces compiling speed (compared
to EC). I have no experiences in writing such
front ends but it is possible (Fortran and Java
frontend exists).
A good start would be an lexical parser (yacc)
for E.
I suppose that the real trouble starts with the
built-in functions (OpenW() etc.) and ends with
OO-concept.
And there are even more things to discuss.
So whenever the FreE project starts you can add
me to the list of (C/E) programmers.

Ciao.

- --
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.
(..."Happiness is not a state; it's a process.", Ali Graham)
@endnode

@node ID40_5 "Old ideas (was: Lacking features) (ID40_5)"
Date: Mon, 23 Nov 1998 09:16:24 -0500
From: max2@ordigraphe.com ("Maxim Olivier-Adlhoch")
Subject: Re: Old ideas (was: Lacking features)

Anders Hasselqvist wrote:
>
> Riccardo Santato wrote:
>
> >
> >Some time ago I suggested the idea of a new totally free AmigaE Compiler,
> >called *"FreE"* . This idea came to me basically because in the actual
> >state...
>
> >
>
> Isn't Gregor Goldbach doing something like this already?

Hello ALL,

The reason I program in E is because of its syntax.  because it is typeless
and because
it remains simple AND fast.

There are many things that E programmers take for granted that C programmers
would like
to get.  PLEASE for the sake of the Language itself, do not change the
syntax.  writing
:= instead of = is not a big issue warranting the rewrite of a language.

I do admit that there are things MISSING and that Those should be addressed
but Do not
make the actual systems different.  That is one of the reasons I shun C++.
many people
Think thay've got better ideas and change C/C++ syntax just a little... but
then it makes
two sources COMPLETELY incompatible.  I'd rather code with an older tool if
that meant I
would not have to re-code my stuff.  I've several 5000+ apploications and
I'd really hate
to code everything again!

- -MAxim

- --
- ----------------------
Maxim Olivier-Adlhoch
- ----------------------
max2@ordigraphe.com
- ----------------------
Are you a programer... Then Visit STEEL(c) Web Site  before you're left
in the cold...
http://www.geocities.com/SiliconValley/Network/7002/steel_welcome.html
@endnode

@node ID40_6 "Old ideas (was: Lacking features) (ID40_6)"
Date: Mon, 23 Nov 1998 14:18:51 +0000 (BST)
From: sac@csd.abdn.ac.uk (Stuart Caie)
Subject: Re: Old ideas (was: Lacking features)

On Mon, 23 Nov 1998, Sven Steiniger wrote:

=>I suppose that the real trouble starts with the
=>built-in functions (OpenW() etc.) and ends with
=>OO-concept.

A job for Java?

Stuart

@endnode

@node ID40_7 "Old ideas (was: Lacking features) (ID40_7)"
Date: Mon, 23 Nov 1998 15:47:28 +0100 (MET)
From: subvcbhd@calvados.zrz.TU-Berlin.DE (Henk Jonas)
Subject: Re: Old ideas (was: Lacking features)

On Mon, 23 Nov 1998, Sven Steiniger wrote:

> I suppose that the real trouble starts with the
> built-in functions (OpenW() etc.) and ends with
> OO-concept.
I think you can replace the build in functions with your own. An for me, I
dont use the buildin functions a lot, maybe StringF, WriteF, PrintF,
sometimes, but it exist for all of them, OS functions and also C lib
functions.

Henk
- ----------------------------------------------------------------
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

@endnode

@node ID40_8 "Old ideas (was: Lacking features) (ID40_8)"
Date: Mon, 23 Nov 1998 15:57:03 +0100 (MET)
From: subvcbhd@calvados.zrz.TU-Berlin.DE (Henk Jonas)
Subject: Re: Old ideas (was: Lacking features)

On Mon, 23 Nov 1998, Maxim Olivier-Adlhoch wrote:

> Anders Hasselqvist wrote:
> >=20
> > Riccardo Santato wrote:
> >=20
> > >Some time ago I suggested the idea of a new totally free AmigaE Compil=
er,
> > >called *"FreE"* . This idea came to me basically because in the actual
> > >state...
> >=20
> > Isn't Gregor Goldbach doing something like this already?
>=20
> Hello ALL,
>=20
> The reason I program in E is because of its syntax.  because it is typele=
ss and because
> it remains simple AND fast.
Yes, the typeless is IMHO a very powerfull feature, the type converting in
other languages are really borring sometimes. Why cant i use in Delphi a
pointer as an Integer and my Integer as a pointer (ok this direction
worked, but the other doesn't)

Henk
- ----------------------------------------------------------------
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

@endnode

@node ID40_9 "Old ideas (was: Lacking features) (ID40_9)"
Date: Mon, 23 Nov 1998 16:29:19 +0100 (MET)
From: mfontana@komodo.ing.unico.it (mauro fontana)
Subject: Re: Old ideas (was: Lacking features)

> > I suppose that the real trouble starts with the
> > built-in functions (OpenW() etc.) and ends with
> > OO-concept.
> I think you can replace the build in functions with your own. An for me, I
> dont use the buildin functions a lot, maybe StringF, WriteF, PrintF,
> sometimes, but it exist for all of them, OS functions and also C lib
> functions.

Oh, well, I think E custom functions can be rewritten as the original ones
in C. The question is how much work will it take to port all those useful
functions that works with strings and lists, input and output, and gfx
stuff.

However, how are you going to make gcc compile the eventual Assembly parts
of the code? Aren't you certanly going to remove E assembly support (and
perfect integration) from it, are you? And no, external module compilation
and linkink is not good as in E I can use normal E variables as
parameters.

Moreover I think lots of other E specific features cannot be handled
correclty (exception handling/list cells/resource traking and garbage
collector).

I think the only option is to rewrite the source code completely (even in
E) and adding new features as native instead of making E a bunch of hacks
and macros suited only for gcc maniacs (people in year 2000 cannot still
program with gcc and its absurd command line syntax, can they?). However
this work should be profitable (less time/better code/high efficiency)
only if Wouter himself is going to work on it as well.

M&F

@endnode

@node ID40_10 "Old ideas (was: Lacking features) (ID40_10)"
Date: Mon, 23 Nov 1998 16:52:25 +0100 (MET)
From: subvcbhd@calvados.zrz.TU-Berlin.DE (Henk Jonas)
Subject: Re: Old ideas (was: Lacking features)

On Mon, 23 Nov 1998, mauro fontana wrote:

> Oh, well, I think E custom functions can be rewritten as the original one=
s
> in C. The question is how much work will it take to port all those useful
> functions that works with strings and lists, input and output, and gfx
> stuff.
Not so much work as the automatic translation from E to C, i think.

> perfect integration) from it, are you? And no, external module compilatio=
n
> and linkink is not good as in E I can use normal E variables as
> parameters.=20
I dont know anything about Linkers, but maybe in the Obj. file you can
connect the local variables in the C and the ASM part, but i think the
only reason for E -> C is the porting ability, so you cant use ASM in this
case.
=20
> Moreover I think lots of other E specific features cannot be handled
> correclty (exception handling/list cells/resource traking and garbage
> collector).
The limit garbage collection in E can be replaced with some extra code,
that noted all memory allocations and freed they in the exit part.

> I think the only option is to rewrite the source code completely (even in
> E) and adding new features as native instead of making E a bunch of hacks
> and macros suited only for gcc maniacs (people in year 2000 cannot still
Thats the best, of cause, but a simple E to C translation would make me
happy. I like to start to program in E, but later i want to use the
powerfull features of C as well. I have xxx kByte code to translate in the
next time, because i want to write MetaView and AMF.library in C. That's
my horror :-) The stupid change of brackets, cases etc.

> program with gcc and its absurd command line syntax, can they?). However
The ec command line syntax is far from making sense and not style guide=20
:-)

Henk
- ----------------------------------------------------------------
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

@endnode

@node ID40_11 "Old ideas (was: Lacking features) (ID40_11)"
Date: Mon, 23 Nov 1998 17:38:52 +0100
From: ss37@irz301.inf.tu-dresden.de (Sven Steiniger)
Subject: Re: Old ideas (was: Lacking features)

Henk Jonas wrote:
>
> On Mon, 23 Nov 1998, mauro fontana wrote:
>
> > Oh, well, I think E custom functions can be rewritten as the original
ones
> > in C. The question is how much work will it take to port all those
useful
> > functions that works with strings and lists, input and output, and gfx
> > stuff.
> Not so much work as the automatic translation from E to C, i think.

Eeeeekkkk! Writing an frontend for gcc has nothing to do with writing
an EtoC translator. I suppose you remember those ugly C++ frontends
that generates giant C sources? The concept of gcc is to use an
frontend which parses the source and generates something like an
abstract syntax-tree, now the optimizer starts and optimizes this
tree and passes this to the backend which makes an assembler
program from it. So writing the frontend has not much to do
with C except that you must write it in C.
The problem is: it is not trival. Eq. How to put OO-concept into
the syntax-tree.

> > perfect integration) from it, are you? And no, external module
compilation
> > and linkink is not good as in E I can use normal E variables as
> > parameters.

Asm-stubs can also use normal variables (even expressions), eq:
  asm("addl %2, %0" : "=r" (result) : "0" (summand1), "dim" (func(arg1,
arg2)))
Which just does result:=summand1+func(arg1, arg2) and handles all
register allocations itself.
Again the problem is to parse e-inline asm and put it into the
syntax-tree. The sources are also not portable.

> I dont know anything about Linkers, but maybe in the Obj. file you can
> connect the local variables in the C and the ASM part, but i think the
> only reason for E -> C is the porting ability, so you cant use ASM in this
> case.
>
> > Moreover I think lots of other E specific features cannot be handled
> > correclty (exception handling/list cells/resource traking and garbage
> > collector).
> The limit garbage collection in E can be replaced with some extra code,
> that noted all memory allocations and freed they in the exit part.

I think only lisp cells are an problem (but how uses it?).

> > I think the only option is to rewrite the source code completely (even
in
> > E) and adding new features as native instead of making E a bunch of
hacks
> > and macros suited only for gcc maniacs (people in year 2000 cannot still

Do you really wanna write an complete compiler in E?

- --
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.
(..."Happiness is not a state; it's a process.", Ali Graham)
@endnode

@node ID40_12 "Old ideas (was: Lacking features) (ID40_12)"
Date: Mon, 23 Nov 1998 18:00:13 +0100 (MET)
From: subvcbhd@calvados.zrz.TU-Berlin.DE (Henk Jonas)
Subject: Re: Old ideas (was: Lacking features)

On Mon, 23 Nov 1998, Sven Steiniger wrote:

> Henk Jonas wrote:
> > Not so much work as the automatic translation from E to C, i think.
>=20
> Eeeeekkkk! Writing an frontend for gcc has nothing to do with writing
> an EtoC translator. I suppose you remember those ugly C++ frontends
> that generates giant C sources? The concept of gcc is to use an
> frontend which parses the source and generates something like an
> abstract syntax-tree, now the optimizer starts and optimizes this
> tree and passes this to the backend which makes an assembler
> program from it. So writing the frontend has not much to do
> with C except that you must write it in C.
> The problem is: it is not trival. Eq. How to put OO-concept into
> the syntax-tree.
Aha, (expression of surprising)
nice to hear about it. If someone write such a frontend we get a portable
E Compiler? I think this would be very usefull.
So, come on and go for it :-)

> I think only lisp cells are an problem (but how uses it?).
How or Who?
Answare: I dont know.

> Do you really wanna write an complete compiler in E?
Then we have another not portable compiler that produce unportable code...

Henk
- ----------------------------------------------------------------
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

@endnode

@node ID40_13 "Old ideas (was: Lacking features) (ID40_13)"
Date: Mon, 23 Nov 1998 18:14:58 +0100
From: ss37@irz301.inf.tu-dresden.de (Sven Steiniger)
Subject: Re: Old ideas (was: Lacking features)

> > Eeeeekkkk! Writing an frontend for gcc has nothing to do with writing
> > an EtoC translator. I suppose you remember those ugly C++ frontends
> > that generates giant C sources? The concept of gcc is to use an
> > frontend which parses the source and generates something like an
> > abstract syntax-tree, now the optimizer starts and optimizes this
> > tree and passes this to the backend which makes an assembler
> > program from it. So writing the frontend has not much to do
> > with C except that you must write it in C.
> > The problem is: it is not trival. Eq. How to put OO-concept into
> > the syntax-tree.
> Aha, (expression of surprising)
> nice to hear about it. If someone write such a frontend we get a portable
> E Compiler? I think this would be very usefull.
> So, come on and go for it :-)

Good luck when diving into the depths of gcc!

> > I think only lisp cells are an problem (but how uses it?).
> How or Who?

:) I meant "who". "How" is not the problem but for what?
Unification is very powerful but is it useful in normal E-programs?

> > Do you really wanna write an complete compiler in E?
> Then we have another not portable compiler that produce unportable code...

Just make it an cross-compiler ;)

- --
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.
(..."Happiness is not a state; it's a process.", Ali Graham)
@endnode

@node ID40_14 "Old ideas (was: Lacking features) (ID40_14)"
From: carl.drougge@2.sbbs.se (Carl Drougge)
Date: Mon, 23 Nov 1998 22:18:24 +0100
Subject: Re: Old ideas (was: Lacking features)

Den 23-Nov-98, skrev mauro fontana:

>I think the only option is to rewrite the source code completely (even in
>E) and adding new features as native instead of making E a bunch of hacks
>and macros suited only for gcc maniacs (people in year 2000 cannot still
>program with gcc and its absurd command line syntax, can they?). However
>this work should be profitable (less time/better code/high efficiency)
>only if Wouter himself is going to work on it as well.

Is Wouter still "alive" at all?

FreE should be able to compile itself. A tree-thingy for GCC is fine,
hopefully one can be written and compiled with the current EC, and then we
can
recompile FreE with "the real thing" once it's working.. and the tree-thing
can be compiled for another platform I would think, so portability wouldn't
be
a problem. (Yes, I think it's a point that it's written in E)

@endnode

@node ID40_15 "Old ideas (was: Lacking features) (ID40_15)"
Date: Tue, 24 Nov 1998 13:39:17 +0100 (MET)
From: mfontana@komodo.ing.unico.it (mauro fontana)
Subject: Re: Old ideas (was: Lacking features)

> > Do you really wanna write an complete compiler in E?
> Then we have another not portable compiler that produce unportable code...

If you want portable code learn C/C++. That exists on almost all available
computer on the Earth. However, I my "complains" on E are not for
portability (I would never try to port a quite complex program with a user
interface or anything Amiga specific to a PC or Mac), but just because it
has not evolved enough to reach the power of C++ by keeping its simple
syntax and advantages.

I would not like to see my E code transformed in C code, as well as would
not like to wait 5 minutes for a compile instead of the 5 seconds that
needs EC, which has a command template like all other Amiga programs
(unlike gcc).

M&F

@endnode

@node ID40_16 "Old ideas (was: Lacking features) (ID40_16)"
Date: Tue, 24 Nov 1998 13:43:55 +0100 (MET)
From: mfontana@komodo.ing.unico.it (mauro fontana)
Subject: Re: Old ideas (was: Lacking features)

> > > perfect integration) from it, are you? And no, external module
compilation
> > > and linkink is not good as in E I can use normal E variables as
> > > parameters.
>
> Asm-stubs can also use normal variables (even expressions), eq:
>   asm("addl %2, %0" : "=r" (result) : "0" (summand1), "dim" (func(arg1,
> arg2)))
> Which just does result:=summand1+func(arg1, arg2) and handles all
> register allocations itself.
> Again the problem is to parse e-inline asm and put it into the
> syntax-tree. The sources are also not portable.

Erm.... what was that? Would that be the way to use ASM with external
references? Give me a PPC assembler manual, please, that seems much
easier!

> > > I think the only option is to rewrite the source code completely (even
in
> > > E) and adding new features as native instead of making E a bunch of
hacks
> > > and macros suited only for gcc maniacs (people in year 2000 cannot
still
>
> Do you really wanna write an complete compiler in E?

What is the problem with that? Just that you can port the compiler on the
PC?

M&F

@endnode

@node ID40_17 "Old ideas (was: Lacking features) (ID40_17)"
Date: Tue, 24 Nov 1998 13:54:48 +0100
From: raptor@cs.tu-berlin.de (Gul Dukat)
Subject: Re: Old ideas (was: Lacking features)

> If you want portable code learn C/C++. That exists on almost all available
> computer on the Earth. However, I my "complains" on E are not for

  To write portable code it is not needed to learn C/C++. C/C++ is
  a language which generates an extrem high overhead when compiling
  and this is not needed. It is something like a very huge preprocessor
8-)
  Also a lot of the code isn't really portable
  (look at macros like #ifdef MAXSEG_64K etc.). Writing a compiler
  which uses a portable language means the creation of a basical
  environment like in Java VMs. I don't like C/C++ because the
  portability-feature should be done by the codegenerator and not by
  the author. Therefore a strategy is needed to manage function-calls,
  structures, shared-libraries etc. which allows to be ported on
  several systems (on the level of the codegenerator).
  If amigaspecific stuff will be thrown out of the E compiler the
language
   can reach this goal. My oppinion 8-)
@endnode

@node ID40_18 "Old ideas (was: Lacking features) (ID40_18)"
From: zokie@teseo.it (Francesco De Napoli)
Date: Tue, 24 Nov 1998 20:27:22 +0100
Subject: Re: Old ideas (was: Lacking features)

Hello mauro

On 24-Nov-98, mauro fontana wrote:

> Erm.... what was that? Would that be the way to use ASM with external
> references? Give me a PPC assembler manual, please, that seems much
> easier!

This is easy and free :)
Go to

http://www.mot-sps.com/sps/General/sales.html

and order all Motorola's book for free. This summer I got all 68K and many
PPC books. After 4 or 5 days they are at your home.

Regards
- --
 "When do you want to reboot today?"

@endnode

@node ID40_19 "Old ideas (was: Lacking features) (ID40_19)"
Date: Wed, 25 Nov 1998 18:45:37 +0000 (BST)
From: sac@csd.abdn.ac.uk (Stuart Caie)
Subject: Re: Old ideas (was: Lacking features)

On Tue, 24 Nov 1998, Francesco De Napoli wrote:

=>and order all Motorola's book for free. This summer I got all 68K and many
=>PPC books. After 4 or 5 days they are at your home.

Remember to be at home when they deliver them or you'll have to walk down to
your postal depot to pick it up, and it's not lightweight!

Stuart

@endnode



@node ID41_0 "Subjects (ID41_0)"
From: carl.drougge@2.sbbs.se (Carl Drougge)
Date: Sat, 21 Nov 1998 22:11:54 +0100
Subject: Subjects

I think this list should have a list-identifier added to the subjects of the
emails, like many other lists. It would make it easier to tell E mails from
private mails.

(Something like this mail getting the subject "[E] Subjects" automatically)

@endnode

@node ID41_1 "Subjects (ID41_1)"
From: agraham@hal9000.net.au (Ali Graham)
Date: Mon, 23 Nov 1998 01:10:13 +0930
Subject: Re: Subjects

On 22-Nov-98, someone (I think it was Carl Drougge) might have written:
CD>  I think this list should have a list-identifier added to the subjects
of
CD>  the emails, like many other lists. It would make it easier to tell E
CD>  mails from private mails.
CD>
CD>  (Something like this mail getting the subject "[E] Subjects"
CD>  automatically)

Why not just filter the messages into a separate folder based
on mail headers?

- --

  Ali Graham     [  mailto:agraham@hal9000.net.au  ]
                 [ http://hal9000.net.au/~agraham/ ]

"I'm Doctor Bunsen Honeydew here at Microsoft Labs,
 where the future is being made today! Beaker - put
 down those Dilithium Crystals and wave to the nice
 viewers!"

@endnode

@node ID41_2 "Subjects (ID41_2)"
From: carl.drougge@2.sbbs.se (Carl Drougge)
Date: Sun, 22 Nov 1998 22:13:11 +0100
Subject: Re: Subjects

Den 22-Nov-98, skrev Ali Graham:

>On 22-Nov-98, someone (I think it was Carl Drougge) might have written:
>CD>  I think this list should have a list-identifier added to the subjects
of
>CD>  the emails, like many other lists. It would make it easier to tell E
>CD>  mails from private mails.
>CD>
>CD>  (Something like this mail getting the subject "[E] Subjects"
>CD>  automatically)

>Why not just filter the messages into a separate folder based
>on mail headers?

Because I don't feel like it. =)
I'd just forget to ever look in that folder..

@endnode

@node ID41_3 "Subjects (ID41_3)"
From: eq3nmf@eq.uc.pt (Nuno Maltez)
Date: Sun, 22 Nov 1998 11:33:43 +0100
Subject: Re: Subjects

Hi Carl,

> I think this list should have a list-identifier added to the subjects of
> the emails, like many other lists. It would make it easier to tell E mails
> from private mails.
>
> (Something like this mail getting the subject "[E] Subjects"
automatically)

I don't think so, unless it's optional and each user can choose if he wants
to receive the e-mail with or without the identifier. I alredy filter my
mails into seprate folders and it serves no puropse to have an entire
folder of e-mails all starting with [E] :-)

Regards
- --
Nuno

@endnode

@node ID41_4 "Subjects (ID41_4)"
From: tommy@pitea.mail.telia.com (Tommy Lindgren)
Date: Wed, 25 Nov 1998 18:44:52 +0200
Subject: Re: Subjects

Hello Carl

On 22-Nov-98, you wrote:

> Den 22-Nov-98, skrev Ali Graham:

>> On 22-Nov-98, someone (I think it was Carl Drougge) might have written=
:
>> CD>  I think this list should have a list-identifier added to the subj=
ects of
>> CD>  the emails, like many other lists. It would make it easier to tel=
l E
>> CD>  mails from private mails.
>> CD>  =

>> CD>  (Something like this mail getting the subject "[E] Subjects"
>> CD>  automatically)

>> Why not just filter the messages into a separate folder based
>> on mail headers?

> Because I don't feel like it. =3D)
> I'd just forget to ever look in that folder..

I see that you use YAM 1.3.5. Why not upgrade to =

YAM 2.00p6? Get it from http://www.yam.ch !

- -- =

Tommy Lindgren - tomyl@telia.com
http://w1.911.telia.com/~u91103938              =

ICQ UIN: 13659426                           =

"Shit Happens" according to...
Einsteinism:    Shit is Relative.

@endnode

@node ID41_5 "Subjects (ID41_5)"
From: carl.drougge@2.sbbs.se (Carl Drougge)
Date: Thu, 26 Nov 1998 01:03:06 +0100
Subject: Re: Subjects

Den 25-Nov-98, skrev Tommy Lindgren:

>I see that you use YAM 1.3.5. Why not upgrade to
>YAM 2.00p6? Get it from http://www.yam.ch !

Because this version works, betas tend not to. =)

@endnode

@node ID41_6 "Subjects (ID41_6)"
From: tommy@pitea.mail.telia.com (Tommy Lindgren)
Date: Fri, 27 Nov 1998 18:28:26 +0200
Subject: Re: Subjects

Hello Carl

On 26-Nov-98, you wrote:

> Den 25-Nov-98, skrev Tommy Lindgren:

>> I see that you use YAM 1.3.5. Why not upgrade to
>> YAM 2.00p6? Get it from http://www.yam.ch !

> Because this version works, betas tend not to. =)

OK.. but it /looks/ nice :-) Actually, so far /I/ haven't
had any problems with p6... I really like it!

- --
Tommy Lindgren - tomyl@telia.com
http://w1.911.telia.com/~u91103938
ICQ UIN: 13659426

Murphy's Law No. 41:
A bird in hand is safer than one overhead.

@endnode

@node ID41_7 "Subjects (ID41_7)"
From: sanric@ronet.it (Riccardo Santato)
Date: Fri, 27 Nov 1998 18:20:39 +0100
Subject: Re: Subjects

Hello Carl

Il 21-Nov-98, Carl Drougge scrisse:

> I think this list should have a list-identifier added to the subjects of
the
> emails, like many other lists. It would make it easier to tell E mails
from
> private mails.
>
> (Something like this mail getting the subject "[E] Subjects"
automatically)
>

Yeah, it would be great !! I'm personally personally involved in 3 mailing
list and it's becoming confused...

======================================================
Santato Riccardo

                               sanric@ronet.it
                               www.geocities.com/SunsetStrip/Stage/6141/
=====================================================



@endnode

@node ID41_8 "Subjects (ID41_8)"
Date: Mon, 30 Nov 1998 10:00:56 +0100
From: Rainer.M.Mueller@uni-konstanz.de (Rainer =?iso-8859-1?Q?M=FCller?=)
Subject: Re: Subjects

Hi !

>> I think this list should have a list-identifier added to the subjects of
the
>> emails, like many other lists. It would make it easier to tell E mails=
 from
>> private mails.
>>=20
>> (Something like this mail getting the subject "[E] Subjects"=
 automatically)
>>=20
>
>Yeah, it would be great !! I'm personally personally involved in 3 mailing
>list and it's becoming confused...=20

You don't need a "[E] Subject" for that. I use Eudora Light and I filter
the mails of this mailing-list using the reply-to field.=20
- -> IF reply-to =3D amigae-list THEN=
 place_this_mail_in_the_e-mailinglist_mailbox

this works perfect without any problems !!

Greetings,

   Rainer

=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
      //  Rainer M=FCller  A1200-030-50MHz 16MB/850MB
     //                  Pentium  166MHz 32MB/2.1GB
    //    have a look at: Aminet:mus/edit/SampleE
\\ //
 \X/  AMIGA for ever !

@endnode

@node ID41_9 "Subjects (ID41_9)"
Date: Mon, 30 Nov 1998 01:09:02 -0800
From: dobes@mindless.com (Dobes Vandermeer)
Subject: Re: Subjects

Rainer Müller wrote:
>
> Hi !
>
> >> I think this list should have a list-identifier added to the subjects
of
> the
> >> emails, like many other lists. It would make it easier to tell E mails
from
> >> private mails.
> >>
> >> (Something like this mail getting the subject "[E] Subjects"
automatically)
> >>
> >
> >Yeah, it would be great !! I'm personally personally involved in 3
mailing
> >list and it's becoming confused...
>
> You don't need a "[E] Subject" for that. I use Eudora Light and I filter
> the mails of this mailing-list using the reply-to field.
> -> IF reply-to = amigae-list THEN
place_this_mail_in_the_e-mailinglist_mailbox

You need the [E] so you can filter visually if you do not like to divide
your mail into folders all the time.  Everywhere i hear this damn stupid
argument, neither side underatsing the other.... W dont WNAT to FILTER,
we jstu want to SEE automatically which messages are for the E list.
That way we can scan (using our eyes) down a long list of messages and
see which are personal messages and which are from mailing lists.

I hope you understand now.

CU
Dobes
@endnode



@node ID42_0 "AmigaCentral.com - Is Now Open - http://www.amigacentral.com (ID42_0)"
From: cb.price@ukonline.co.uk (Phil Price)
Date: Wed, 02 Sep 1992 12:59:58 +0000
Subject: AmigaCentral.com - Is Now Open - http://www.amigacentral.com

Hello,

My Name is Phil Price And i'm the Webmaster Of AmigaCentral.com
The Online Amiga Magazine. And i's liek to inform you that after
much hasstle and problems it's finally open ! Please have a look
at http://www.amigacentral.com . I think you'll find it a good
read and questions to info@amigacentral.com, or reply to me
directly.

As Always we are looking for Your Mods, Graphics and Utils.
Please send them to contrib@amigacentral.com, we hope
to here form you soon.

Thank You.

Phil Price , Webmaster/Editor Of AmigaCentral
Phil@amigacentral.com

@endnode



@node ID43_0 "gui problem (ID43_0)"
From: garymag@hotmail.com ("Gary Maguire")
Subject: gui problem
Date: Sun, 22 Nov 1998 06:56:50 PST

Hello Chaps.

Is it possible to include an object internal call in an easygui
or newgui button definition?

Here is my problem:

OPT MODULE

OBJECT gui
  various defs
ENDOBJECT

PROC creategui() OF gui
  [BUTTON,{proc}, etc etc
ENDPROC

Where proc is a module call such as self.doSomething()

Thanks for any comments, sorry if I'm being silly

TTFN

______________________________________________________
Get Your Private, Free Email at http://www.hotmail.com
@endnode



@node ID44_0 "Bitmap blitting and backfill hooks (ID44_0)"
From: chris@planb.thegap.com (Christopher Perver)
Date: Sun, 22 Nov 1998 21:50:20 +0000
Subject: Bitmap blitting and backfill hooks

   Hello all,

I have managed to load an IFF file as a bitmap, and want to fill
a window with it. The problem I am having is that the bitmap is
smaller than the window, and I don't know how to make the bitmap
tile. BltBitmapRastport() expects the src to be the same size
as the dest. Can anyone help me with this?

The thing I am trying to do is to do with window backfill hooks.

This is where I have a second problem.

The hook PROC for the backfill has several parameters...
I have looked up my RKRM Includes manual and this is what I
have got, but I think it is probably wrong, as it doesn't seem
to work, as I think some of the parameters might be wrong.

I am not sure the message parameter is actually an array.
But the RKRM manual did have this...

  message == [ (Layer *) layer, (struct Rectangle) bounds,
               (WORD) offsetx, (WORD) offsety ]

PROC backFillHook(hook:PTR TO hook, rp:PTR TO rastport, mes:PTR TO LONG)
  DEF lay:PTR TO layer, bounds:PTR TO rectangle, x, y

   lay    := mes[0]
   bounds := mes[1]
   x      := mes[2]
   y      := mes[3]

   BltBitMapRastPort(bmp, 0, 0,
                     rp,  bounds.minx + x, bounds.miny + y,
                          bounds.maxx,     bounds.maxy, $C0)

ENDPROC

I hope someone can help. Thanks
- --
Regards,
     Chris.

And it shall come to pass, that whosoever shall call on
the name of the Lord shall be saved.
Acts 2:21

   http://www.jvim.com/

@endnode

@node ID44_1 "Bitmap blitting and backfill hooks (ID44_1)"
Date: Mon, 23 Nov 1998 12:52:04 +0100 (MET)
From: mfontana@komodo.ing.unico.it (mauro fontana)
Subject: Re: Bitmap blitting and backfill hooks

> I am not sure the message parameter is actually an array.
> But the RKRM manual did have this...
>
>   message == [ (Layer *) layer, (struct Rectangle) bounds,
>                (WORD) offsetx, (WORD) offsety ]
>
>
> PROC backFillHook(hook:PTR TO hook, rp:PTR TO rastport, mes:PTR TO LONG)
>   DEF lay:PTR TO layer, bounds:PTR TO rectangle, x, y
                          ^^^^^^^^^^^^^^^^^^^^^^^

>
>    lay    := mes[0]
>    bounds := mes[1]
>    x      := mes[2]
>    y      := mes[3]
>
>    BltBitMapRastPort(bmp, 0, 0,
>                      rp,  bounds.minx + x, bounds.miny + y,
>                           bounds.maxx,     bounds.maxy, $C0)
>

I can't remeber the right parameters for the Layer cals, but:
look at there:  if the C declaration is right bounds is not a pointer but
a complete rectangle structure. Moreover if msg is defined as a PTR TO
LONG the two WORDS x and Y will not be in the right position. You have to
change the msg PTR or have to "manually" merge the two words in a single
LONG (not that difficult both in Assemby or using normal E commands).

Hope this will help you.

M&F

@endnode

@node ID44_2 "Bitmap blitting and backfill hooks (ID44_2)"
From: jason@fsel.com ("Jason Hulance")
Subject: RE: Bitmap blitting and backfill hooks
Date: Mon, 23 Nov 1998 13:25:28 -0000

Christopher Perver wrote:

> The hook PROC for the backfill has several parameters...
> I have looked up my RKRM Includes manual and this is what I
> have got, but I think it is probably wrong, as it doesn't seem
> to work, as I think some of the parameters might be wrong.
>
> I am not sure the message parameter is actually an array.
> But the RKRM manual did have this...
>
>   message == [ (Layer *) layer, (struct Rectangle) bounds,
>                (WORD) offsetx, (WORD) offsety ]

This translates to:

  OBJECT backfilldata
    layer:PTR TO layer
    bounds:rectangle
    offsetx:INT
    offsety:INT
  ENDOBJECT

> PROC backFillHook(hook:PTR TO hook, rp:PTR TO rastport, mes:PTR TO LONG)
>   DEF lay:PTR TO layer, bounds:PTR TO rectangle, x, y
>    lay    := mes[0]
>    bounds := mes[1]
>    x      := mes[2]
>    y      := mes[3]
>    BltBitMapRastPort(bmp, 0, 0,
>                      rp,  bounds.minx + x, bounds.miny + y,
>                           bounds.maxx,     bounds.maxy, $C0)
> ENDPROC

So, this would be:

  PROC backFillHook(hook:PTR TO hook, rp:PTR TO rastport,
                    mes:PTR TO backfilldata)
    BltBitMapRastPort(bmp, 0, 0,
                      rp,  mes.bounds.minx + mes.offsetx,
                           mes.bounds.miny + mes.offsety,
                           mes.bounds.maxx,     mes.bounds.maxy, $C0)
  ENDPROC

Ali Graham was doing something with backfill hooks in his library
version of EasyGUI.  You might like to ask him how he got on.

Cheers!

- --
Your numbers are 75, 1, 3, 2, 8 and 2.  The target is 398.
The conundrum for today is "naloelgag"
======================================================================
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

@endnode



@node ID45_0 "E Objects (ID45_0)"
Date: Mon, 23 Nov 1998 16:17:13 +0100 (MET)
From: mfontana@komodo.ing.unico.it (mauro fontana)
Subject: E Objects

Hulance's reply to the previous backfill problem raised some questions in
my mind which are not necessary linked to the previous problem (well,
they are not at all).

Hulance has transormed an array into an object which is surely a better
solution than messing with pointers as I have adviced in my previous
answer. However I still can understand how E objects are hanled internally
as lots of times I have seen they just break my code...

Here an example...

I had enough of the exec list handling functions that have to be applied
to objects. So I thought to make a link module that would have intergrated
all the Exec's list function as methods for my lkn/mlkn (same as ln/mln)
and mlkh/lkh (same as lh/mlh. Those objects are defined as:

OBJECT mlkn OF mln
ENDOBJECT

OBJECT lnk OF mln
  pri:CHAR
  type:CHAR -> Hope this are right typed
  name:LONG
ENDOBJECT

Lists are copy of the exec list as above for nodes.

mlkn has a method defined: remove
lkn inherits the same method.

mlkh has initlist, addtail and addhead methods
mlh inherits the same methods.

Those methods are just calls to the Exec functions witht the right
parmeters (i.e. AddTail(self, node) etc..)

It took me two hours to understand that, to make my objects, that
inherited the methods, work with the system exec routines I have to define
them as OF mln/mlh and not create them ex-novo with the same fields such
as:

OBJECT mlkn
  succ:PTR TO mlkn
  pred:PTR TO mlkn
ENDOBJECT

OBJECT mlkh
  head:LONG
  tail:LONG
  tailpred:LONG
ENDOBJECT

Etc.. the same as above.

This last ones seems to have a private long as their first field that make
Exc function not working th right way.

Once I found the right way to define the objects and make them work the
right way with the Exec routines, I then wanted to eliminate those calls
to the amigalib.m module for list initialising.

But there's no way to write the init function in E, and I did not tried in
assembly (following the example on the RKM) as I already know the offsets
of the fields are not right.

So, I could not make my own link module without references to the
exec/lists.m, exec/nodes.m and amigalib.m modules.

Can anyone explain me how I can obtain objects with methods that have not
changed offsets with respect to the AmigaOS C includes?

Thanks.

M&F

@endnode

@node ID45_1 "E Objects (ID45_1)"
From: carl.drougge@2.sbbs.se (Carl Drougge)
Date: Mon, 23 Nov 1998 22:29:29 +0100
Subject: Re: E Objects

Den 23-Nov-98, skrev mauro fontana:

>Can anyone explain me how I can obtain objects with methods that have not
>changed offsets with respect to the AmigaOS C includes?

I think E allways needs the first long to be a pointer to a function table.
But I don't really see the problem..

OBJECT whatnot
   ln : ln
   whatever
ENDOBJECT

PROC remove() OF whatnot IS Remove( self.ln )

And so on..

> So, I could not make my own link module without references to the
> exec/lists.m, exec/nodes.m and amigalib.m modules.

All the stuff can of course be rewritten in E..
Say newList() for example:

PROC newList( lh : PTR TO lh )
  lh.tailpred := lh
  lh.tail     := NIL
  lh.head     := lh + 4
ENDPROC

But of course the same principle with
PROC init() OF whatever IS newList( self.lh )
works just fine here too.

@endnode

@node ID45_2 "E Objects (ID45_2)"
From: jason@fsel.com ("Jason Hulance")
Subject: RE: E Objects
Date: Tue, 24 Nov 1998 08:55:10 -0000

mauro fontana wrote:

> Hulance has transormed an array into an object which is surely a better
> solution than messing with pointers as I have adviced in my previous
> answer.

I think the C includes are missing a data structure for the backfill
hook data, as there's one for some other hooks.  The first thing a C
coder would do on meeting that RKRM description is write a struct to
describe the data.  It's no different in E: writing an OBJECT is the
best thing to do.  It's just a shame there isn't one written for you
already in the system includes...

> However I still can understand how E objects are hanled internally
> as lots of times I have seen they just break my code...

Yes, if you have the wrong idea about how objects work and you make
bad assumptions then your code is likely to break.

> Here an example...
>
> I had enough of the exec list handling functions that have to be applied
> to objects. So I thought to make a link module that would have intergrated
> all the Exec's list function as methods for my lkn/mlkn (same as ln/mln)
> and mlkh/lkh (same as lh/mlh. Those objects are defined as:
>
> OBJECT mlkn OF mln
> ENDOBJECT
>
> OBJECT lnk OF mln
>   pri:CHAR
>   type:CHAR -> Hope this are right typed
>   name:LONG
> ENDOBJECT
>
> Lists are copy of the exec list as above for nodes.
>
> mlkn has a method defined: remove
> lkn inherits the same method.

So lnk is actually "OF mlkn" not "OF mln"?

> mlkh has initlist, addtail and addhead methods
> mlh inherits the same methods.

"mlh" is the system object.  So, I guess you mean your own "lnkh" or
something.

> Those methods are just calls to the Exec functions witht the right
> parmeters (i.e. AddTail(self, node) etc..)

Sounds fine.

> It took me two hours to understand that, to make my objects, that
> inherited the methods, work with the system exec routines I have to define
> them as OF mln/mlh and not create them ex-novo with the same fields such
> as:

Well, look in the E.guide.  At the end of Ch14D, Wouter explains that you
can add methods to system objects, and this keeps compatibility with
those objects.  Wouter does skimp a bit on documentation, but the obvious
implication is that writing an OBJECT with the same elements (not using
"OF") will *not* be compatible.  In fact, nowhere else does the E.guide
suggest any correspondence of an OOP OBJECT with a simple OBJECT.  So you
shouldn't have assumed any.

> This last ones seems to have a private long as their first field that make
> Exc function not working th right way.

Yes.  But you want to avoid using this knowledge.  If Wouter changes the
way OOP OBJECTs work then your code may break.  You can only assume what
Wouter tells you (in the E.guide).

> Once I found the right way to define the objects and make them work the
> right way with the Exec routines, I then wanted to eliminate those calls
> to the amigalib.m module for list initialising.
>
> But there's no way to write the init function in E, and I did not tried in
> assembly (following the example on the RKM) as I already know the offsets
> of the fields are not right.

This is tricky, since the normal Exec lists treat the list header like two
nodes, overlaid in the same memory.  So, no, you wouldn't think it was
possible to mimic this directly using OOP OBJECTs.  But you can, if you're
careful, since you should be wrapping the classes so that you *never*
treat the "node" parts of the list header as OOP nodes ("mlkn" in your
example).  Remember: you (should) *never* need to.

To be completely explicit: because of the system object compatibility that
Wouter has implemented, you only need to avoid calling methods on such a
node.  So you can borrow the code from Src/Tools/AmigaLib/lists.e, and be
careful in the other methods.  You're making the data PRIVATE, aren't you?

> Can anyone explain me how I can obtain objects with methods that have not
> changed offsets with respect to the AmigaOS C includes?

Wouter documents this in Ch14D of E.guide, as I said above.

Cheers!

- --
Your numbers are 50, 2, 7, 2, 4 and 3.  The target is 282.
The conundrum for today is "tniieutst"
======================================================================
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

@endnode

@node ID45_3 "E Objects (ID45_3)"
Date: Tue, 24 Nov 1998 13:28:48 +0100 (MET)
From: mfontana@komodo.ing.unico.it (mauro fontana)
Subject: RE: E Objects

> Well, look in the E.guide.  At the end of Ch14D, Wouter explains that you
> can add methods to system objects, and this keeps compatibility with
> those objects.  Wouter does skimp a bit on documentation, but the obvious
> implication is that writing an OBJECT with the same elements (not using
> "OF") will *not* be compatible.  In fact, nowhere else does the E.guide
> suggest any correspondence of an OOP OBJECT with a simple OBJECT.  So you
> shouldn't have assumed any.

Well, he even does not say they are different 8)... so I presumed no
changes where done to objects with methods.

> This is tricky, since the normal Exec lists treat the list header like two
> nodes, overlaid in the same memory.  So, no, you wouldn't think it was
> possible to mimic this directly using OOP OBJECTs.  But you can, if you're
> careful, since you should be wrapping the classes so that you *never*
> treat the "node" parts of the list header as OOP nodes ("mlkn" in your
> example).  Remember: you (should) *never* need to.

You got the point. I wanted the OOP link class to be able to access
successive/preeceding nodes and, of course, at least use their methods.
But it seems this is not possible to do this and keeping compatibility
with the Exec functions.

> To be completely explicit: because of the system object compatibility that
> Wouter has implemented, you only need to avoid calling methods on such a
> node.  So you can borrow the code from Src/Tools/AmigaLib/lists.e, and be
> careful in the other methods.  You're making the data PRIVATE, aren't you?

No, as said, the advantage is to use the node methods (while keeping the
easy access to nodes through mlkn.succ or mlkn.pred).

> > Can anyone explain me how I can obtain objects with methods that have
not
> > changed offsets with respect to the AmigaOS C includes?
>
> Wouter documents this in Ch14D of E.guide, as I said above.

I should have a better look at it then.

Thanks a lot.

M&F

@endnode

@node ID45_4 "E Objects (ID45_4)"
From: jason@fsel.com ("Jason Hulance")
Subject: RE: E Objects
Date: Tue, 24 Nov 1998 13:11:23 -0000

mauro fontana quoted and wrote:

> > Wouter does skimp a bit on documentation, but the obvious
> > implication is that writing an OBJECT with the same elements (not using
> > "OF") will *not* be compatible.  In fact, nowhere else does the E.guide
> > suggest any correspondence of an OOP OBJECT with a simple OBJECT.  So
> > you shouldn't have assumed any.
>
> Well, he even does not say they are different 8)... so I presumed no
> changes where done to objects with methods.

For him to mention that there *is* a way to remain (pointer) compatible
with system objects is about the best you could hope for, from Wouter.
He's not keen on documentation.  He'd much rather be doing the difficult
stuff...

> > This is tricky, since the normal Exec lists treat the list header
> > like two nodes, overlaid in the same memory.  So, no, you wouldn't
> > think it was possible to mimic this directly using OOP OBJECTs.  But
> > you can, if you're careful, since you should be wrapping the classes
> > so that you *never* treat the "node" parts of the list header as OOP
> > nodes ("mlkn" in your example).  Remember: you (should) *never* need
> > to.
>
> You got the point. I wanted the OOP link class to be able to access
> successive/preeceding nodes and, of course, at least use their methods.
> But it seems this is not possible to do this and keeping compatibility
> with the Exec functions.

No, it's not possible without hiding the links.  The lh data structure
and it's relation to ln is compact and ingenious, but flipping awful in
terms of flexibility.  You will be hard pushed to find *any* OO language
that can support this and remain compatible with the pointer data.

> > To be completely explicit: because of the system object compatibility
> > that Wouter has implemented, you only need to avoid calling methods on
> > such a node.  So you can borrow the code from
> > Src/Tools/AmigaLib/lists.e, and be careful in the other methods.
> > You're making the data PRIVATE, aren't you?
>
> No, as said, the advantage is to use the node methods (while keeping the
> easy access to nodes through mlkn.succ or mlkn.pred).

Well, that does it then.  You can't mimic an overlaid lh and have Exec
and pointer compatibility.  Hiding the links is the only sane option.

Cheers!

- --
Your numbers are 75, 6, 9, 7, 1 and 5.  The target is 678.
The conundrum for today is "tnesaopos"
======================================================================
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

@endnode



@node ID46_0 "Kicking myself in public (was: EasyGUI/E problem, or something (ID46_0)"
Date: 24 Nov 98 04:00:34 -0500
From: victord@netrover.com ("Victor Ducedre")
Subject: Kicking myself in public (was: EasyGUI/E problem, or something
larger?)

[Hopefully I haven't put this off long enough that nobody can follow
along anymore.  Either way, it's 4 AM, I'm dead tired, and I can't help
but ROTFL at my own stupidity :)]

Quoting myself and Ali Graham (in some order)... :)

>>>     I've actually simplified the GUI definition to *one* element, and
>>>  The Problem still lives... (sigh)

>>ow. :( How about the various options passed to guiinitA()? Is any of
>>those causing it? Are you using any PLUGINs that haven't been
>>recompiled against other sources that have changed? (this could
>>probably throw things off even if they weren't actually used by the
>>program, as EC would get its offsets in a twist while compiling...)

>    There are no plugins, and changing the options does nothing.

but finishing off the options taglist with a TAG_DONE does amazing
things...

Apologies to Ali and Jason and anyone else who gave my problem even a
moment of consideration, assuming it to be genuine.  I hope the humour
of it all makes up for it. :-)

- --
Victor Ducedre          (victord@netrover.com)          Team AMIGA
Now proud keeper of the XPKatana spell (v 1.4 on its way).
"You spelled 'ballon' and 'vodoo' wrong," Tom said morosely.

@endnode

@node ID46_1 "Kicking myself in public (was: EasyGUI/E problem, or something (ID46_1)"
Date: Tue, 24 Nov 1998 09:06:10 -0500
From: max2@ordigraphe.com ("Maxim Olivier-Adlhoch")
Subject: Re: Kicking myself in public (was: EasyGUI/E problem, or something
larger?)

Victor Ducedre wrote:
> but finishing off the options taglist with a TAG_DONE does amazing
> things...
>
> Apologies to Ali and Jason and anyone else who gave my problem even a
> moment of consideration, assuming it to be genuine.  I hope the humour
> of it all makes up for it. :-)

Don't kid yourself, the most stupid bugs are the hardest to find... because
they are stupid and they aren't considered in your mind.  its even worse
when a stupid bug does some not so stupid bugs... like a program crash...

;-)  Don't worry, I'm pretty sure we've all done this at least once...
maybe even unknowingly...

- -|\/|axim

- --
- ----------------------
Maxim Olivier-Adlhoch
- ----------------------
max2@ordigraphe.com
- ----------------------
Are you a programer... Then Visit STEEL(c) Web Site  before you're left
in the cold...
http://www.geocities.com/SiliconValley/Network/7002/steel_welcome.html
@endnode

@node ID46_2 "Kicking myself in public (was: EasyGUI/E problem, or something (ID46_2)"
From: jason@fsel.com ("Jason Hulance")
Subject: RE: Kicking myself in public (was: EasyGUI/E problem, or something
larger?)
Date: Wed, 25 Nov 1998 07:54:09 -0000

Victor Ducedre wrote:

> >    There are no plugins, and changing the options does nothing.
>
> but finishing off the options taglist with a TAG_DONE does amazing
> things...
>
> Apologies to Ali and Jason and anyone else who gave my problem even a
> moment of consideration, assuming it to be genuine.  I hope the humour
> of it all makes up for it. :-)

Is this connected to the problem you (very recently) brought to my
attention?  Need I still investigate it?  [As you can tell, I didn't
get any time at the weekend to look at it...]

Cheers!

- --
Your numbers are 75, 6, 9, 7, 1 and 5.  The target is 678.
The conundrum for today is "tnesaopos"
======================================================================
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

@endnode

@node ID46_3 "Kicking myself in public (was: EasyGUI/E problem, or something (ID46_3)"
Date: 25 Nov 98 04:50:26 -0500
From: victord@netrover.com ("Victor Ducedre")
Subject: RE: Kicking myself in public (was: EasyGUI/E problem, or something
larger?)

>Victor Ducedre wrote:

>> Apologies to Ali and Jason and anyone else who gave my problem even a
>> moment of consideration, assuming it to be genuine.  I hope the humour
>> of it all makes up for it. :-)

>Is this connected to the problem you (very recently) brought to my
>attention?  Need I still investigate it?  [As you can tell, I didn't
>get any time at the weekend to look at it...]

    It is slightly related, in that the problem was found while trying
everything imaginable to stomp out my Enforcer hits.  The OPTI-compiled
module works fine, and that's what I'm going to use.  The problem *does*
still exist in the non-OPTI compile, as near as I can tell, and I really
don't know if it means anything or not.  I'm going to quit while I'm
ahead.
    Investigating it now doesn't really seem necessary, other than
satisfying curiosity about the cause and reason. :)

Thanks for the attention, though...
- --
Victor Ducedre          (victord@netrover.com)          Team AMIGA
Now proud keeper of the XPKatana spell (v 1.4 on its way).
I was emperor for an hour, I had nothing else to do.

@endnode



@node ID47_0 "Problem with IF/ELSEIF (ID47_0)"
Date: Wed, 25 Nov 1998 11:37:58 +0100 (CET)
From: szczepan@student.man.bialystok.pl ("Marcin Juszkiewicz
(Szczepan/BlaBla)")
Subject: Problem with IF/ELSEIF

 In my program (MutiViewPrefs) I must split tooltypes list into few lists.
I do it in long IF/ELSEIF/ELSE/ENDIF but I have one problem - part with
ELSE not working. My source is :

- -> sOurce

  DEF tmp[256] : STRING,
      dobj : PTR TO diskobject,
      oldtooltypes[700] : LIST,
      mem,
      a,
      b

  IF dobj := GetDiskObject(projname)
    oldtooltypes := dobj.tooltypes
    IF oldtooltypes
      mem := NIL
      WHILE oldtooltypes[mem] <> NIL
        StrCopy(tmp,oldtooltypes[mem])

        b := Val(tmp,NIL)

        IF InStr(tmp,'IM1=',0) > -1
          isnitt := TRUE
          a := newicon.add(tmp)
        ELSEIF InStr(tmp,'IM2=',0) > -1
          isnitt := TRUE
          a := newicon.add(tmp)
        ELSEIF InStr(tmp,'EDIT THE FOLLOWING LINES',0) > -1
          isnitt := TRUE
          a := newicon.add(tmp)
        ELSEIF InStr(tmp,'DEFAULTIMAGE',0) > -1
          isnitt := TRUE
          a := newicon.add(tmp)

        ELSEIF b > NIL
          a := fidnode.add(tmp)

        ELSEIF StrCmp(tmp,'DEF',3)
          a := defnode.add(tmp)
        ELSEIF StrCmp(tmp,'SHOWINFO',8)
          IF StrCmp(tmp,'SHOWINFO=NO')
            showinfo := FALSE
          ELSE
            showinfo := TRUE
          ENDIF

        ELSEIF StrCmp(tmp,'.',1)
          a := extnode.add(tmp)
        ELSEIF a := InStr(tmp,'.')
          IF (a > -1) AND (a < 10) THEN a := extnode.add(tmp)

        ELSE

- -> this part isn't working !!!

          a := dtnode.add(tmp)
        ENDIF
        mem++

      ENDWHILE
    ENDIF
    FreeDiskObject(dobj)
  ENDIF

- ------
 Marcin Juszkiewicz (Szczepan/BlaBla)   *Team Amiga*
 szczepan@infeco.pb.bialystok.pl http://student.man.bialystok.pl/szczepan/
 A1200 BlizzIv 2+8MB RAM 425MB HDD x8 CD
 Author of MultiView for OS 2.0+ -> Aminet:util/sys/2b_mv_os2_x.lha

@endnode

@node ID47_1 "Problem with IF/ELSEIF (ID47_1)"
Date: Wed, 25 Nov 1998 14:24:27 +0100 (MET)
From: mfontana@komodo.ing.unico.it (mauro fontana)
Subject: Re: Problem with IF/ELSEIF

On Wed, 25 Nov 1998, Marcin Juszkiewicz (Szczepan/BlaBla) wrote:

>  In my program (MutiViewPrefs) I must split tooltypes list into few lists.
> I do it in long IF/ELSEIF/ELSE/ENDIF but I have one problem - part with
> ELSE not working. My source is :

>   IF dobj := GetDiskObject(projname)
>     oldtooltypes := dobj.tooltypes
>     IF oldtooltypes
>       mem := NIL
>       WHILE oldtooltypes[mem] <> NIL
>         StrCopy(tmp,oldtooltypes[mem])

This comparison just does nothing

>
>         b := Val(tmp,NIL)
>
>         IF InStr(tmp,'IM1=',0) > -1
>           isnitt := TRUE
>           a := newicon.add(tmp)
>         ELSEIF InStr(tmp,'IM2=',0) > -1
>           isnitt := TRUE
>           a := newicon.add(tmp)
>         ELSEIF InStr(tmp,'EDIT THE FOLLOWING LINES',0) > -1
>           isnitt := TRUE
>           a := newicon.add(tmp)
>         ELSEIF InStr(tmp,'DEFAULTIMAGE',0) > -1
>           isnitt := TRUE
>           a := newicon.add(tmp)
>
>         ELSEIF b > NIL
>           a := fidnode.add(tmp)
>
>         ELSEIF StrCmp(tmp,'DEF',3)
>           a := defnode.add(tmp)
>         ELSEIF StrCmp(tmp,'SHOWINFO',8)
>           IF StrCmp(tmp,'SHOWINFO=NO')
>             showinfo := FALSE
>           ELSE
>             showinfo := TRUE
>           ENDIF
>
>         ELSEIF StrCmp(tmp,'.',1)
>           a := extnode.add(tmp)
>         ELSEIF a := InStr(tmp,'.')

Change the a:= to = otherwise the assignment is always TRUE

>           IF (a > -1) AND (a < 10) THEN a := extnode.add(tmp)
>
>         ELSE
>
> -> this part isn't working !!!
>
>           a := dtnode.add(tmp)
>         ENDIF
>         mem++
>
>       ENDWHILE
>     ENDIF
>     FreeDiskObject(dobj)
>   ENDIF

M&F

@endnode

@node ID47_2 "Problem with IF/ELSEIF (ID47_2)"
From: jason@fsel.com ("Jason Hulance")
Subject: RE: Problem with IF/ELSEIF
Date: Wed, 25 Nov 1998 14:20:33 -0000

Marcin Juszkiewicz (Szczepan/BlaBla) wrote:

>  In my program (MutiViewPrefs) I must split tooltypes list into few lists.
> I do it in long IF/ELSEIF/ELSE/ENDIF but I have one problem - part with
> ELSE not working. My source is :

[...Snip...]

>         ELSEIF StrCmp(tmp,'.',1)
>           a := extnode.add(tmp)
>         ELSEIF a := InStr(tmp,'.')
>           IF (a > -1) AND (a < 10) THEN a := extnode.add(tmp)
>
>         ELSE
>
> -> this part isn't working !!!
>
>           a := dtnode.add(tmp)
>         ENDIF

The InStr() comparison (in the second ELSEIF above) will only yield
FALSE (i.e., zero) if the '.' is found at the beginning of the string.
But that's exactly what the preceding StrCmp() tests.  So the ELSE
part will never be reached.  Perhaps you meant:

  ...
  ELSEIF (a:=InStr(tmp,'.')) <> -1
  ...

Cheers!

- --
Your numbers are 100, 4, 3, 10, 6 and 7.  The target is 258.
The conundrum for today is "soimipaxh"
======================================================================
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

@endnode

@node ID47_3 "Problem with IF/ELSEIF (ID47_3)"
Date: Wed, 25 Nov 1998 16:28:32 +0100
From: gamboni@fastnet.ch (Maxime Gamboni)
Subject: Re: Problem with IF/ELSEIF

mauro fontana a =E9crit:

> On Wed, 25 Nov 1998, Marcin Juszkiewicz (Szczepan/BlaBla) wrote:
>
> >  In my program (MutiViewPrefs) I must split tooltypes list into few l=
ists.
> > I do it in long IF/ELSEIF/ELSE/ENDIF but I have one problem - part wi=
th
> > ELSE not working. My source is :

[...]

> >         ELSEIF a :=3D InStr(tmp,'.')
>
> Change the a:=3D to =3D otherwise the assignment is always TRUE

This is not quite right. when you use an assignment as an expression (lik=
e
here), it returns the value that was assigned to the variable. For instan=
ce,
WriteF('a is \d\n',(a:=3D36)) outputs 'a is 36'
[...]

                            Maxime

@endnode

@node ID47_4 "Problem with IF/ELSEIF (ID47_4)"
Date: Wed, 25 Nov 1998 16:51:51 +0100 (MET)
From: mfontana@komodo.ing.unico.it (mauro fontana)
Subject: Re: Problem with IF/ELSEIF

> > Change the a:= to = otherwise the assignment is always TRUE
>
> This is not quite right. when you use an assignment as an expression (like
> here), it returns the value that was assigned to the variable. For
instance,
> WriteF('a is \d\n',(a:=36)) outputs 'a is 36'
> [...]

Oh, yes, that's right. Shame on me, and on my E knowledge... (I should
study a bit more 8) ).

M&F

@endnode

@node ID47_5 "Problem with IF/ELSEIF (ID47_5)"
Date: Thu, 26 Nov 1998 10:45:20 +0100 (MET)
From: szczepan@student.man.bialystok.pl ("Marcin Juszkiewicz
(Szczepan/BlaBla)")
Subject: Re: Problem with IF/ELSEIF

On Wed, 25 Nov 1998, mauro fontana wrote:

- ->>       WHILE oldtooltypes[mem] <> NIL
- ->>         StrCopy(tmp,oldtooltypes[mem])
- ->
- ->This comparison just does nothing

oldtooltypes is ended by NIL

- ->>         ELSEIF a := InStr(tmp,'.')

And here I changed code.. to
            ELSEIF (Instr(tmp,'.') > -1) AND (Instr(tmp,'.') < 10)

and it works

- ------
 Marcin Juszkiewicz (Szczepan/BlaBla)   *Team Amiga*
 szczepan@student.man.bialystok.pl http://student.man.bialystok.pl/szczepan/
 A1200 BlizzIv 2+8MB RAM 425MB HDD x8 CD
 Author of MultiView for OS 2.0+ -> Aminet:util/sys/2b_mv_os2_x.lha

@endnode



@node ID48_0 "NewIcon copy! (ID48_0)"
From: david.lidstrom@home.se (David =?iso-8859-1?Q?Lidstr=F6m?=)
Date: Fri, 27 Nov 1998 09:57:12 +0100
Subject: NewIcon copy!

Hello folks!

I'm making a minor program called MrIcon,
though the NewIcon copy stuff bothers me!

When I copy the newicon, and the close the =

program a guru pops up!
    But not when I copy the "normal" image,
so I suppose it's this part that contains
an error!

I guess to copy the images like I do in the
example is both illegal and stupid! :\

But how shall I do it? I have no idea?!

Please help!

The Example:

- -------
IF newicon_m=3DNEWICON

  newdobj_dest.normalimage:=3Dnewdobj_source.normalimage
  newdobj_dest.selectedimage:=3Dnewdobj_source.selectedimage

  n:=3DPutNewDiskObject( noInfo(dest_name), newdobj_dest)
  FreeDiskObject(newdobj_dest); newdobj_dest:=3D0

  loadRightDest(dest_name)

ELSE                    =

 ...

ENDIF

- --------

Thnx! :)

- -- =

Current track: Mortification - Blood Sacrifice
________________
David Lidstr=F6m <david.lidstrom@home.se> Buisness page:
Marsv=E4gen 2    <david@pang-pang.com>    http://www.pang-pang.com
642 33 FLEN    ICQ UIN: 15268371        Webring:
SWEDEN                                  http://listen.to/gods.music
Tfn 0739/70 68 55                       Homepage:  =

                                        http://hem1.passagen.se/noamon
If at first you don't succeed, destroy all evidence that you tried.

______

@endnode



@node ID49_0 "MuiCursor (ID49_0)"
From: dave@shaye.demon.co.uk ("Dave Denton")
Date: 27 Nov 98 18:29:16 +0000
Subject: MuiCursor

Hi All,
        Can anyone tell me how to link the cursor keys to buttons in
mui, like they are in most web browers.

Cheers Dave
@endnode



@node ID50_0 "Old ideas - Frontend (ID50_0)"
From: sanric@ronet.it (Riccardo Santato)
Date: Fri, 27 Nov 1998 18:32:56 +0100
Subject: Old ideas - Frontend

Hello Sven

Il 23-Nov-98, Sven Steiniger scrisse:

> The best thing would be writing an frontend for
> gcc. This would add portability and an excellent
> optimizer but reduces compiling speed (compared
> to EC). I have no experiences in writing such
> front ends but it is possible (Fortran and Java
> frontend exists).

One year ago I started "Planet - E" which in my intention was a perfect
environment for E.
I stopped it because it was gettin' too large for a single coder !!

> A good start would be an lexical parser (yacc)
> for E

Do you mean something like the one for GoldED ?

> I suppose that the real trouble starts with the
> built-in functions (OpenW() etc.) and ends with
> OO-concept.

NO MORE HARDWARE BANGING INTUITION FUNCTIONS !! EVERYTHING MUST BE CODED IN
A
SYSTEM COMPLIANT WAY.
This means that if we have to open a Screen, we must use REAL Intuition
functions (or MACROs )

> And there are even more things to discuss.
> So whenever the FreE project starts you can add
> me to the list of (C/E) programmers.

Welcome !!!!

======================================================
Santato Riccardo

                               sanric@ronet.it
                               www.geocities.com/SunsetStrip/Stage/6141/
=====================================================



@endnode



@node ID51_0 "THANK YOU ALL !!! (ID51_0)"
From: sanric@ronet.it (Riccardo Santato)
Date: Fri, 27 Nov 1998 20:41:33 +0100
Subject: THANK YOU ALL !!!

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.

- --BOUNDARY.2015346360.3
Content-Type: text/plain

Hello World.

I returned home after a week of university  (I study quite far from my city
and this means that I must live there 5 days a week) and... what a surprise
!!
I never thought my idea of a free E compiler would have
gained such a success.
Very well, maybe we can do something serious, but before we go on we have to
build the team.
That's why I attached a .lha archive which contains the text for the
subscription to the project : there's written everything you wanna know, the
real base of this work.

Read it and tell me what U think 'bout it !!

Kind regards

======================================================
Santato Riccardo

                               sanric@ronet.it
                               www.geocities.com/SunsetStrip/Stage/6141/
=====================================================



- --BOUNDARY.2015346360.3
Content-Type: application/x-lha; name="Subscription.lha"
Content-Disposition: attachment; filename="Subscription.lha"
Content-Transfer-Encoding: base64
Content-Description: READ THIS !!

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

- --BOUNDARY.2015346360.3--

@endnode

@node ID51_1 "THANK YOU ALL !!! (ID51_1)"
From: eq3nmf@eq.uc.pt (Nuno Maltez)
Date: Sun, 29 Nov 1998 12:45:46 +0100
Subject: Re: THANK YOU ALL !!!

Hi Riccardo,

> !! I never thought my idea of a free E compiler would have gained such a
> success.
> Very well, maybe we can do something serious, but before we go on we have
> to build the team.
> That's why I attached a .lha archive which contains the text for the
> subscription to the project : there's written everything you wanna know,
> the real base of this work.

I think you should also contact Gregor Goldbach beause he had already
started to write a new E compiler and, IIRC, actaully had some stuff
working already.

Regards
- --
Nuno

@endnode



@node ID52_0 "Old ideas - assembly ? (ID52_0)"
From: sanric@ronet.it (Riccardo Santato)
Date: Fri, 27 Nov 1998 20:42:01 +0100
Subject: Old ideas - assembly ?

Hello Tommy

Il 22-Nov-98, Tommy Lindgren scrisse:

> I agree. But we need someone who can assembler... :-/

With the power of ...

1)    StormC++ (which optimizes and is well supported by many other tools)
2)    GNU C++ (probably the biggest and more portable C compiler in the
universe)
3)    VBCC     (free, fast, doesn't require Gigas of freemem and compiles
for
PPC)

who still needs assemblers ? With the coming of PPC, you can forget LEA,
MOVE,
DC.B and etc...

- --
======================================================
Santato Riccardo

                               sanric@ronet.it
                               www.geocities.com/SunsetStrip/Stage/6141/
=====================================================



@endnode

@node ID52_1 "Old ideas - assembly ? (ID52_1)"
From: tommy@pitea.mail.telia.com (Tommy Lindgren)
Date: Sun, 29 Nov 1998 14:10:14 +0200
Subject: Re: Old ideas - assembly ?

Hello Riccardo

On 27-Nov-98, you wrote:

> Hello Tommy

> Il 22-Nov-98, Tommy Lindgren scrisse:

>> I agree. But we need someone who can assembler... :-/

> With the power of ...

> 1)    StormC++ (which optimizes and is well supported by many other too=
ls)

> 2)    GNU C++ (probably the biggest and more portable C compiler in the=

> universe)

> 3)    VBCC     (free, fast, doesn't require Gigas of freemem and compil=
es for
> PPC)

> who still needs assemblers ? With the coming of PPC, you can forget LEA=
, MOVE,
> DC.B and etc...  =

Okay, I admit, the word "assembler" was an "automatic" reaction of the se=
ntence =

"code a new compiler". My expirence of C compilers is bad, IMHO ther're s=
low and
the output files are giantic (compared with E and assembler).

The best "feature" (IMHO) with E is its compilation speed. I *hate* to wa=
it more
than five seconds just because of some silly misspell... =

Has Wouter no future plans for E? =

- -- =

Tommy Lindgren - tomyl@telia.com
http://w1.911.telia.com/~u91103938              =

ICQ UIN: 13659426                           =

Famous people swearing... Einstein:
Any f%*ker can understan that

@endnode

@node ID52_2 "Old ideas - assembly ? (ID52_2)"
From: sanric@ronet.it (Riccardo Santato)
Date: Sun, 29 Nov 1998 16:29:17 +0100
Subject: Re[2]: Old ideas - assembly ?

Hello Tommy

Il 29-Nov-98, Tommy Lindgren scrisse:

> Okay, I admit, the word "assembler" was an "automatic" reaction of the
sentence
> "code a new compiler". My expirence of C compilers is bad, IMHO ther're
slow
and
> the output files are giantic (compared with E and assembler).

Compiling speed in C++ environments can be made faster using .o objects
instead of .h ones, like we
normally do in E.
To obtain these files just compile without link. It's the same thing that E
does.

> The best "feature" (IMHO) with E is its compilation speed. I *hate* to
wait
more
> than five seconds just because of some silly misspell...

I know it's very boring. E is fast, really, but it doesn't optimize a thing,
while C compilers do.
If someone wants to create a small application, E is the best choice, but
for
large projects (like FreE) better prefere more solid languages.

> Has Wouter no future plans for E?

It's the second time I suggest the idea of creating a new compiler, but
Wouter
never entered in the question. Maybe he is not so interested in new
versions,
because they would cost him the passage from old-style assembly to new-style
C++ (are there other way to make E outputs code for PPC ?!?)

See U soon !

======================================================
Santato Riccardo

                               sanric@ronet.it
                               www.geocities.com/SunsetStrip/Stage/6141/
=====================================================



@endnode

@node ID52_3 "Old ideas - assembly ? (ID52_3)"
Date: Mon, 30 Nov 1998 11:59:56 -0500
From: max2@ordigraphe.com ("Maxim Olivier-Adlhoch")
Subject: Re: Old ideas - assembly ?

Riccardo Santato wrote:

>
> > Has Wouter no future plans for E?
>
> It's the second time I suggest the idea of creating a new compiler, but
Wouter
> never entered in the question. Maybe he is not so interested in new
versions,
> because they would cost him the passage from old-style assembly to
new-style
> C++ (are there other way to make E outputs code for PPC ?!?)

Not Really,  Wouter does not belong to this list AFAIK.  Too Busy.  But
As I said before he is (at least was in May)  willing to port it to OS
5.  He is waiting until then to say announce anything I think.  He
Really likes Amiga so I Think he'll want to port his toolset to the next
generation.  But his main problem is time... He is VERY busy and is
actively working on the University stuff, so i guess the PD is much less
important in his life right now. Especially since The new OS isn't out
yet! Putting alot of time is somewhat of wasted time.

One of the reaons E compiles so fast is because its written 100% in
assembly.  Thus making a new E compiler will Certainly be slower in
compilation time.

Can I wish for it to still be a cli-based compiler (but with more
options of course.)  cause it makes it much easier to interface with
external environments...

I for example NEVER enter a CLI when I compile... I just use a one-line
script which is executed by IconX command... simple and easy.

just build one Icon per e file.  you can even make multiple-Compile
scripts which take care of dependencies and mimic a Build tool in C.

>
> See U soon !
>
> ======================================================
> Santato Riccardo
>
>                                sanric@ronet.it
>                                www.geocities.com/SunsetStrip/Stage/6141/
> =====================================================
>
>
@endnode

@node ID52_4 "Old ideas - assembly ? (ID52_4)"
From: tommy@pitea.mail.telia.com (Tommy Lindgren)
Date: Mon, 30 Nov 1998 19:11:26 +0200
Subject: Re: Old ideas - assembly ?

Hello Riccardo

On 29-Nov-98, you wrote:

[snip]

>> The best "feature" (IMHO) with E is its compilation speed. I *hate* to
wait
>> more than five seconds just because of some silly misspell...

> I know it's very boring. E is fast, really, but it doesn't optimize a
thing,
> while C compilers do.

Really? Do you mean in size or speed? A simple "Hello, world!" program in
E becomes ~700 bytes large. In gcc it becomes >2000 bytes. (okay, I don't
know if gcc is good or bad compiler)

- --
Tommy Lindgren - tomyl@telia.com
http://w1.911.telia.com/~u91103938
ICQ UIN: 13659426

Just because everything is different doesn't mean anything has changed.
 - Southern California Oracle -

@endnode

@node ID52_5 "Old ideas - assembly ? (ID52_5)"
Date: Mon, 30 Nov 1998 18:52:18 +0000 (BST)
From: sac@csd.abdn.ac.uk (Stuart Caie)
Subject: Re: Old ideas - assembly ?

On Mon, 30 Nov 1998, Tommy Lindgren wrote:

=>> I know it's very boring. E is fast, really, but it doesn't optimize a
thing,
=>> while C compilers do.
=>
=>Really? Do you mean in size or speed? A simple "Hello, world!" program in
=>E becomes ~700 bytes large. In gcc it becomes >2000 bytes. (okay, I don't
=>know if gcc is good or bad compiler)

Code generated by E uses the Amiga Operating system. Code generated by
GCC uses ixemul, and fights against the Amiga OS, as it's pretending to
be a UNIX C compiler and UNIX C environment rather than be a 'native'
compiler. The actual code generated by GCC is quite good, but it is
wasted by having tons and tons of unneccesary UNIX emulation
stubs/libraries added.

Do something clever in E in one procedure and compile it as a module.
Do the same thing in C in one function and compile it with the -c option.

You should then get a 'fair' comparison.

Stuart

@endnode

@node ID52_6 "Old ideas - assembly ? (ID52_6)"
From: sanric@ronet.it (Riccardo Santato)
Date: Wed, 02 Sep 1992 13:03:13 +0100
Subject: Re[2]: Old ideas - assembly ?

Hello Maxim

Il 30-Nov-98, Maxim Olivier-Adlhoch scrisse:

> Not Really,  Wouter does not belong to this list AFAIK.  Too Busy.  But
> As I said before he is (at least was in May)  willing to port it to OS
> 5.  He is waiting until then to say announce anything I think.  He
> Really likes Amiga so I Think he'll want to port his toolset to the next
> generation.  But his main problem is time... He is VERY busy and is
> actively working on the University stuff, so i guess the PD is much less
> important in his life right now. Especially since The new OS isn't out
> yet! Putting alot of time is somewhat of wasted time.

AFAIK the new OS is still far away from completion while PPC processors are
our reality.

> One of the reaons E compiles so fast is because its written 100% in
> assembly.  Thus making a new E compiler will Certainly be slower in
> compilation time.

It's not true that everything written in ASM is fast ! It depends from the
guy
who stands behind the console.

> Can I wish for it to still be a cli-based compiler (but with more
> options of course.)  cause it makes it much easier to interface with
> external environments...

Yes, the idea is good . When I talk about a new environment, I mean
something
like StormC or SAS/C: an editor which calls an external
compiler,debugger,profiler...

> I for example NEVER enter a CLI when I compile... I just use a one-line
> script which is executed by IconX command... simple and easy.

That's one of best thing of Amiga: simplicity.

- --
======================================================
Santato Riccardo

                               sanric@ronet.it
                               www.geocities.com/SunsetStrip/Stage/6141/
=====================================================



@endnode

@node ID52_7 "Old ideas - assembly ? (ID52_7)"
From: sanric@ronet.it (Riccardo Santato)
Date: Wed, 02 Sep 1992 13:07:54 +0100
Subject: Re[2]: Old ideas - assembly ?

Hello Tommy

Il 30-Nov-98, Tommy Lindgren scrisse:

> Really? Do you mean in size or speed? A simple "Hello, world!" program in
> E becomes ~700 bytes large. In gcc it becomes >2000 bytes. (okay, I don't
> know if gcc is good or bad compiler)

Both. Even in StormC (which is the BEST environment for coding on Amiga) the
executables are large, but when a program or an application is astoundingly
fast, do you read the number of Kbytes it eats on your HD ?
Personally I'd prefer "Quake" to be bigger in size but faster than the
contrary...

CU
======================================================
Santato Riccardo

                               sanric@ronet.it
                               www.geocities.com/SunsetStrip/Stage/6141/
=====================================================



@endnode

@node ID52_8 "Old ideas - assembly ? (ID52_8)"
From: sanric@ronet.it (Riccardo Santato)
Date: Wed, 02 Sep 1992 13:09:49 +0100
Subject: Re[2]: Old ideas - assembly ?

Hello Stuart

Il 30-Nov-98, Stuart Caie scrisse:

> Code generated by E uses the Amiga Operating system. Code generated by
> GCC uses ixemul, and fights against the Amiga OS, as it's pretending to
> be a UNIX C compiler and UNIX C environment rather than be a 'native'
> compiler. The actual code generated by GCC is quite good, but it is
> wasted by having tons and tons of unneccesary UNIX emulation
> stubs/libraries added.

I'm not so sure but it seems to me that ,before compiling, GCC asks you
wether
to use ixemul or not.
Am I right ?

Regards
- --
======================================================
Santato Riccardo

                               sanric@ronet.it
                               www.geocities.com/SunsetStrip/Stage/6141/
=====================================================



@endnode

@node ID52_9 "Old ideas - assembly ? (ID52_9)"
Date: Mon, 30 Nov 1998 13:58:32 -0800
From: dobes@mindless.com (Dobes Vandermeer)
Subject: Re: Old ideas - assembly ?

Tommy Lindgren wrote:
>
> Hello Riccardo
>
> On 29-Nov-98, you wrote:
>
> [snip]
>
> >> The best "feature" (IMHO) with E is its compilation speed. I *hate* to
wait
> >> more than five seconds just because of some silly misspell...
>
> > I know it's very boring. E is fast, really, but it doesn't optimize a
thing,
> > while C compilers do.
>
> Really? Do you mean in size or speed? A simple "Hello, world!" program in
> E becomes ~700 bytes large. In gcc it becomes >2000 bytes. (okay, I don't
> know if gcc is good or bad compiler)

Size vs. speed, they are different problems.

GCC generates much larger code because it does everything in a very
portable way, which leads to lots of extra info being added to the file
and stuff.

E does in fact optimise code, but it does not have a very extensive
optimiser.

GCC has varying levels of optimisation, but even it does not sport some
of the fancier optimisation techniques, mostly because they are very
difficult to apply to C code.

CU
DObes
@endnode

@node ID52_10 "Old ideas - assembly ? (ID52_10)"
Date: Mon, 30 Nov 1998 14:13:09 -0800
From: dobes@mindless.com (Dobes Vandermeer)
Subject: Re: Old ideas - assembly ?

Riccardo Santato wrote:
>
> Hello Stuart
>
> Il 30-Nov-98, Stuart Caie scrisse:
>
> > Code generated by E uses the Amiga Operating system. Code generated by
> > GCC uses ixemul, and fights against the Amiga OS, as it's pretending to
> > be a UNIX C compiler and UNIX C environment rather than be a 'native'
> > compiler. The actual code generated by GCC is quite good, but it is
> > wasted by having tons and tons of unneccesary UNIX emulation
> > stubs/libraries added.
>
> I'm not so sure but it seems to me that ,before compiling, GCC asks you
wether
> to use ixemul or not.
> Am I right ?

You can change its settings to use libnix instead of ixemul.  However,
libnix isn't quite as good as ixemul, and stuff.

CU
Dobes
@endnode



@node ID53_0 "Old ideas - Syntax (ID53_0)"
From: sanric@ronet.it (Riccardo Santato)
Date: Fri, 27 Nov 1998 18:37:17 +0100
Subject: Old ideas - Syntax

Hello Maxim

Il 23-Nov-98, Maxim Olivier-Adlhoch scrisse:

> The reason I program in E is because of its syntax.  because it is
typeless
and because
> it remains simple AND fast.

Being typeless is either an advantage or a bad thing ! Read in the list how
many problems this causes every day !!

> There are many things that E programmers take for granted that C
programmers
would like
> to get.  PLEASE for the sake of the Language itself, do not change the
syntax.  writing
> := instead of = is not a big issue warranting the rewrite of a language.

I've launched the idea of a new COMPILER, not of a new LANGUAGE ! Everything
will remain the same !

> I do admit that there are things MISSING and that Those should be
addressed
but Do not
> make the actual systems different.  That is one of the reasons I shun C++.
many people
> Think thay've got better ideas and change C/C++ syntax just a little...
but
then it makes
> two sources COMPLETELY incompatible.  I'd rather code with an older tool
if
that meant I
> would not have to re-code my stuff.  I've several 5000+ apploications and
I'd really hate
> to code everything again!

No worries !

======================================================
Santato Riccardo

                               sanric@ronet.it
                               www.geocities.com/SunsetStrip/Stage/6141/
=====================================================



@endnode



@node ID54_0 "Old ideas - Java (ID54_0)"
From: sanric@ronet.it (Riccardo Santato)
Date: Fri, 27 Nov 1998 20:32:25 +0100
Subject: Old ideas - Java

Hello Stuart

Il 23-Nov-98, Stuart Caie scrisse:

> A job for Java?

No, for God's sake, NO JAVA. It's slow, boring, C++ similar and not
conceived
for our machines.

======================================================
Santato Riccardo

                               sanric@ronet.it
                               www.geocities.com/SunsetStrip/Stage/6141/
=====================================================



@endnode

@node ID54_1 "Old ideas - Java (ID54_1)"
Date: Mon, 30 Nov 1998 09:53:01 +0000 (BST)
From: sac@csd.abdn.ac.uk (Stuart Caie)
Subject: Re: Old ideas - Java

On Fri, 27 Nov 1998, Riccardo Santato wrote:

=>Il 23-Nov-98, Stuart Caie scrisse:
=>
=>> A job for Java?
=>
=>No, for God's sake, NO JAVA. It's slow, boring, C++ similar and not
conceived
=>for our machines.

It's secure, portable to almost anywhere, full of functionality, NOT C++
(it's
more 'how an object-oriented form of C would look if it was done properly
instead of being done like C++') and it's not concieved for any machine,
which
removes a  lot of hangups and problems.

C code can use a lot of very ugly constructs and assumptions that do nothing
but make room for bugs. Java takes a stand against these problems, and
people
call it slow. So what? I code in assembler most of the time, and I think
that
the code generated for C programs is slow.

Do you want a portable compiler for the E language, or do you just want to
use
the optimiser and PPC code generation from other Amiga compilers?

I'd like to know how you're going to implement E's exception handling,
objects,
lisp cells and lambda functions in ANSI C.

Stuart

@endnode

@node ID54_2 "Old ideas - Java (ID54_2)"
From: sanric@ronet.it (Riccardo Santato)
Date: Wed, 02 Sep 1992 12:55:48 +0100
Subject: Re[2]: Old ideas - Java

Hello Stuart

Il 30-Nov-98, Stuart Caie scrisse:


> Do you want a portable compiler for the E language, or do you just want to
use
> the optimiser and PPC code generation from other Amiga compilers?

I think it's not so useful now to talk 'bout portability when the team have
still to be formed ...
Let's discuss it later.

> I'd like to know how you're going to implement E's exception handling,
objects,
> lisp cells and lambda functions in ANSI C.

Not ANSI C, but C++. I know C cannot handle classes (which are the real
implementation of C++ towards C).

BTW, who now does make use of lambda funtions and lisp-cells ?

CU
======================================================
Santato Riccardo

                               sanric@ronet.it
                               www.geocities.com/SunsetStrip/Stage/6141/
=====================================================



@endnode

@node ID54_3 "Old ideas - Java (ID54_3)"
Date: Mon, 30 Nov 1998 21:24:23 +0000 (UTC)
From: tsb@earth.li (Tim Bagot)
Subject: Re: Re[2]: Old ideas - Java

On Wed, 2 Sep 1992, Riccardo Santato wrote:
> BTW, who now does make use of lambda funtions and lisp-cells ?

I found quoted expressions really quite useful recently. I had a long list
of expressions which could be selected just by Evaling the appropriate
list item. I could have done this with a SELECT OF, but that seemed rather
clumsy and inelegant in comparison.

BTW, is there any reason why edbg won't trace inside SELECT OFs?

Tim Bagot

@endnode



@node ID55_0 "Bitmap palette remapping (ID55_0)"
From: chris@planb.thegap.com (Christopher Perver)
Date: Sat, 28 Nov 1998 22:14:46 +0000
Subject: Bitmap palette remapping

   Hello everyone,

I have decided not to bother with backfill hooks, as I think I can
get away without using them.

My question is does anybody know how to remap a bitmap palette
to a screen palette without using datatypes? And if there aren't
the right colours, and there are free pens available, changing them and
locking them?

Thanks.
- --
Regards,
     Chris.

He that believeth on the Son hath everlasting life:
and he that believeth not the Son shall not see life;
but the wrath of God abideth on him.
John 3:36

   http://www.jvim.com/

@endnode



@node ID56_0 "Program output (ID56_0)"
From: dissident@mail.telepac.pt (Roberto)
Date: Sun, 29 Nov 1998 16:34:28 +0000
Subject: Program output

 Hi. How do i get output from a program? Lets say i run it with
SystemTagList(), how do i get it's output?
 Another thing: how does Efindhit find the correct offset in the source
files?

- --
rOBERTo ->dissident@mail.telepac.pt<- ICQ:14501808

@endnode

@node ID56_1 "Program output (ID56_1)"
From: wozniak_m@mail.gwl.koszalin.tpnet.pl (Michal Wozniak)
Date: Sun, 29 Nov 1998 19:56:23 +0300
Subject: Re: Program output

Hello.

On 29-Lis-98, Roberto wrote:

> Hi. How do i get output from a program? Lets say i run it with
> SystemTagList(), how do i get it's output?

You can use Execute() from dos.library. There you can define input and
output stream.

> Another thing: how does Efindhit find the correct offset in the source
> files?

I think he is using DEBUG hunk.

>

Regards

@endnode



@node ID57_0 "INet225 (ID57_0)"
From: dissident@mail.telepac.pt (Roberto)
Date: Sun, 29 Nov 1998 15:42:49 +0000
Subject: INet225

 Hey there!  Has anyone translated the INet225 package to AmigaE modules?

- --
rOBERTo ->dissident@mail.telepac.pt<- ICQ:14501808

@endnode



@node ID58_0 "MUI OM_GET Method (ID58_0)"
Date: Mon, 30 Nov 1998 12:54:19 -0500
From: max2@ordigraphe.com ("Maxim Olivier-Adlhoch")
Subject: MUI OM_GET Method

Hi All,

I'm trying to implement an OM_GET method out of BOOPSI... The problem is
that I seem to be unable to put the information I want into the opget
structure in a way which will make it return the information corrrectly.

The actual function I'm using is get() (but I think this is a #define
for another function called etAttrs or something like that. cause When I
get an error in this function that's the text displayed in the Con and I
have nothing of that kind in my source.

The problems are simple.

1) if I RETURN a value of MUI_TRUE from my OM_GET method, it Crashes the
application !

2) when I set the value of opget.storage to something, it is always
returned as 0 by get.  If I then dereference the pointer which
opget.strorage currently points to and insert a value into that (see
following):

DEF ptr=0:PTR TO LONG

(...snip...)

ptr := opget.storage

ptr[0] := value

(...snip...)

THen the value returned by get() has no bearing as to what value should
be...

I'm pretty mixed up by his one, but I guess any one which has done
BOOPSI or MUI can set me strait in no-time :)

I'm also wondering what function I should be using under E to get
actuall Tags from my MUI classes... should I build all the opget stuff
and call DoMethodA myself or are there simpler methods...

The function get() seems to work for other object in my MUI tree, so I'm
wondering why it wouldn't for my own custom class.  PLUS, there are NO
docs covering this in MUI nor are they very explicit in the RKRMs...
unless someone can tell where to look :)

- -|\/|axim
- --
- ----------------------
Maxim Olivier-Adlhoch
- ----------------------
max2@ordigraphe.com
- ----------------------
Are you a programer... Then Visit STEEL(c) Web Site  before you're left
in the cold...
http://www.geocities.com/SiliconValley/Network/7002/steel_welcome.html
@endnode



