[comp.sys.atari.st.tech] Porting from MWC code

bill@mwca.UUCP (Bill Sheppard) (04/09/91)

I'm in the process of attempting to recompile MicroEmacs 3.11 to make some
changes (remove mouse support so I can use within a CLI, for one).  The
source code appears to expect Mark Williams C, but I'm using Sozobon (also
have Alcyon).  So far I've seen two compilation (haven't tried linking yet)
errors: the structure DMABUFFER is expected in stat.h, the Sozobon stat.h
doesn't reference it, and "aesbind.h" is expected, which also isn't in the
Sozobon or dlibs distribution.  Any ideas how these can be compensated for
or where I might find AES bindings (are they in another .h file?)

What other things should I watch for when porting from one variant of C to
another, especially when I don't have documentation for the original target?
-- 
 ##############################################################################
 # Bill Sheppard  --  bills@microware.com  --  {uunet,sun}!mcrware!mwca!bill  #
 # Microware Systems Corporation  ---  OS-9: Seven generations beyond OS/2!!  #
 ######Opinions expressed are my own, though you'd be wise to adopt them!######

steve@thelake.mn.org (Steve Yelvington) (04/09/91)

[In article <1840@mwca.UUCP>,
     bill@mwca.UUCP (Bill Sheppard) writes ... ]

> I'm in the process of attempting to recompile MicroEmacs 3.11 to make some
> changes (remove mouse support so I can use within a CLI, for one).  The
> source code appears to expect Mark Williams C, but I'm using Sozobon (also
> have Alcyon).  So far I've seen two compilation (haven't tried linking yet)
> errors: the structure DMABUFFER is expected in stat.h, the Sozobon stat.h
> doesn't reference it, and "aesbind.h" is expected, which also isn't in the
> Sozobon or dlibs distribution.  Any ideas how these can be compensated for
> or where I might find AES bindings (are they in another .h file?)

The DMABUFFER is a 44-byte buffer used by Fsfirst() and Fsnext(). The MWC
stat.h file includes a typedef for it; dLibs includes it directly in the
definition of the stat struct. The MWC definition provides some access
to internal GEMdos memory (the part dLibs identified as ``reserved
field. DON'T TOUCH'' but you probably won't need any of that.

The dLibs source code should have some examples of using its stat
structure.  I think the rule of thumb is to get the old DTA pointer
and save it, declare a new DTA buffer, Fsetdta(), use it, then
restore the old buffer with Fsetdta.

The MWC aesbind.h file declares the values returned by AES functions
-- all are ints, so you don't have to worry about that -- plus a couple
of peculiar structure typedefs: Rect (four integers), Prect and Mouse
(both four pointers to ints). The Mark Williams documentation uses those
structures in a (probably vain) attempt to make GEM function calls more
readable.

> What other things should I watch for when porting from one variant of C to
> another, especially when I don't have documentation for the original target?

I can't think of any really bizarre things that you'll run into going
from MWC to Sozobon. If you go in the opposite direction you'll need
the dLibs source code handy, because Sozobon's library is far more complete
than Mark Williams', especially in the string-handling functions.

----
  Steve Yelvington / P. O. Box 38 / Marine on St. Croix, MN 55047 USA
  INTERNET: steve@thelake.mn.org    UUCP: plains!umn-cs!thelake!steve
  GEnie: S.YELVINGTO2               Delphi: YELVINGTON

bjoern@drdhh.hanse.de (Bjoern Kriews) (04/12/91)

From article <1840@mwca.UUCP>, by bill@mwca.UUCP (Bill Sheppard):
> errors: the structure DMABUFFER is expected in stat.h, the Sozobon stat.h
> doesn't reference it, and "aesbind.h" is expected, which also isn't in the
> Sozobon or dlibs distribution.  Any ideas how these can be compensated for
> or where I might find AES bindings (are they in another .h file?)

DMABUFFER is MW's acronym for DTA (passed to GEMDOS Fsetdta()).

Have no Sozobon at hand, try obdefs.h / gemdefs.h.

So short, Bjoern


---
bjoern@drdhh.hanse.de = Bjoern Kriews / Stormsweg 6 / 2000 Hamburg 76 / FRG
"gaaga mahwe Bjoern urgl ufzae Turbo-C bnub"     (J. Willamowius)

apratt@atari.UUCP (Allan Pratt) (04/13/91)

bill@mwca.UUCP (Bill Sheppard) writes:

>I'm in the process of attempting to recompile MicroEmacs 3.11 to make some
>changes (remove mouse support so I can use within a CLI, for one).  

I will be doing that for Dan (making it truly conditional on the compile-time
symbol "MOUSE") before the true 3.11 release.  I tell you so you know you're
probably duplicating the effort.

>source code appears to expect Mark Williams C, but I'm using Sozobon (also
>have Alcyon).  So far I've seen two compilation (haven't tried linking yet)
>errors: the structure DMABUFFER is expected in stat.h, the Sozobon stat.h
>doesn't reference it, and "aesbind.h" is expected, which also isn't in the
>Sozobon or dlibs distribution.  Any ideas how these can be compensated for
>or where I might find AES bindings (are they in another .h file?)

This Emacs for the ST is GREAT, but the portability stuff is TERRIBLE. If
you're on an ST, the code only works for ST520 and ATARI and MWC. If you
want to do something different, like a different compiler, you're in for
trouble.

Basically, you should leave MWC and ATARI and ST520 defined and then and
remove code as necessary for your compiler.  DMABUFFER is the MWC name for
the DTA structure; it's only used in getffile and getnfile. Substitute the
DTA struct from your compiler (check osbind.h or make your own) and fix the
field names in the defines that have "info" in them.

As for aesbind.h, it might be called gem.h or gembind.h.  It has the
AES structure and constant definitions, the companion to vdibind.h.

============================================
Opinions expressed above do not necessarily	-- Allan Pratt, Atari Corp.
reflect those of Atari Corp. or anyone else.	  ...ames!atari!apratt