[Contents] [Index] [Help] [Retrace] [browse <] [Browse >]

TABLE OF CONTENTS

utility.library/AllocateTagItems
utility.library/Amiga2Date
utility.library/CallHookPkt
utility.library/CheckDate
utility.library/CloneTagItems
utility.library/Date2Amiga
utility.library/FilterTagChanges
utility.library/FilterTagItems
utility.library/FindTagItem
utility.library/FreeTagItems
utility.library/GetTagData
utility.library/MapTags
utility.library/NextTagItem
utility.library/PackBoolTags
utility.library/RefreshTagItemClones
utility.library/SDivMod32
utility.library/SMult32
utility.library/Stricmp
utility.library/Strnicmp
utility.library/TagInArray
utility.library/ToLower
utility.library/ToUpper
utility.library/UDivMod32
utility.library/UMult32
utility.library/AllocateTagItems             utility.library/AllocateTagItems

    NAME
        AllocateTagItems --  Allocate a TagItem array (or chain). (V36)

    SYNOPSIS
        tagList = AllocateTagItems( numItems )
        D0                          D0

        struct TagItem *AllocateTagItems( ULONG numItems);

    FUNCTION
        Allocates the specified number of usable TagItems slots, and does
        so in a format that the function FreeTagItems can handle.

        Note that to access the TagItems in 'tagList', you should use
        the function NextTagItem().  This will insure you respect any
        chaining (TAG_MORE) that the list uses, and will skip any
        TAG_IGNORE items that AllocateTagItems() might use to stash
        size and other information.

    INPUTS
        numItems        - the number of TagItem slots you want to allocate.

    RESULT
        tagList         - the allocated chain of TagItem structures.  Will
                          return NULL if unsuccessful.

    BUGS

    SEE ALSO
        FreeTagItems(), CloneTagItems()

utility.library/Amiga2Date                         utility.library/Amiga2Date

   NAME
        Amiga2Date -- Calculate the date from a timestamp.  (V36)

   SYNOPSIS
        Amiga2Date( AmigaTime, Date )
                    D0         A0

        void Amiga2Date( ULONG, struct ClockData * );

   FUNCTION
        Fills in a ClockData structure with the date and time calculated
        from a ULONG containing the number of seconds from 01-Jan-1978
        to the date.

   INPUTS
        AmigaTime       - the number of seconds from 01-Jan-1978.

   RESULTS
        Date            - filled in with the date/time specified by
                          AmigaTime.

   NOTES

   SEE ALSO
        CheckDate(), Date2Amiga()

   BUGS

utility.library/CallHookPkt                       utility.library/CallHookPkt

    NAME
        CallHookPkt -- Invoke a Hook function callback. (V36)

    SYNOPSIS
        return = CallHookPkt( hook, object, paramPkt )
        D0                    A0    A2      A1

        ULONG CallHookPkt( struct Hook *hook, VOID *object, VOID *paramPkt );

    FUNCTION
        Performs the callback standard defined by a Hook structure.
        This function is really very simple; it effectively performs
        a JMP to Hook->h_Entry.

        It is probably just as well to do this operation in an
        assembly language function linked in to your program, possibly
        from a compiler supplied library or a builtin function.

        It is anticipated that C programs will often call a 'varargs'
        variant of this function which will be named CallHook.  This
        function must be provided in a compiler specific library, but
        an example of use would be:

        returnval = CallHook( hook, dataobject, COMMAND_ID, param1, param2 );

        This function CallHook can be implemented in many C compilers
        like this:
        CallHook( hook, object, command, ... )
        struct Hook     *hook;
        VOID            *object;
        ULONG           command;
        {
                return ( CallHookPkt( hook, object, (VOID *) &command ) );
        }

    INPUTS
        Hook            - pointer to Hook structure as defined in
                          utility/hooks.h
        Object          - useful data structure in the particular context the
                          hook is being used for.
        ParamPkt        - pointer to a parameter packet (often built on the
                          stack); by convention this packet should start off
                          with a longword command code, and the remaining
                          data in the packet depends on that command.

    RESULT
        return          - The meaning of the value returned in D0 depends on
                          the context in which the Hook is being used.

    NOTES
        The functions called through this function should follow normal
        register conventions unless EXPLICITLY documented otherwise (and
        they have a good reason too).

    BUGS

    SEE ALSO
        utility/hooks.h

utility.library/CheckDate                           utility.library/CheckDate

   NAME
        CheckDate -- Checks ClockData struct for legal date. (V36)

   SYNOPSIS
        AmigaTime = CheckDate( Date )
        D0                     A0

        ULONG CheckDate( struct ClockData * );

   FUNCTION
        Determines if the Date is a legal date and returns the number
        of seconds to Date from 01-Jan-1978 if it is.

   INPUTS
        Date            - pointer to a ClockData structure.

   RESULTS
        AmigaTime       - 0 if Date invalid; otherwise, the number of
                          seconds to Date from 01-Jan-1978.

   NOTES

   BUGS
        The wday field of the ClockData structure is not checked.

   SEE ALSO
        Amiga2Date(), Date2Amiga()

utility.library/CloneTagItems                   utility.library/CloneTagItems

    NAME
        CloneTagItems -- Copies a TagItem list.  (V36)

    SYNOPSIS
        newTagList = CloneTagItems( tagList )
        D0                          A0

        struct TagItem *CloneTagItems( struct TagItem *tagList );

    FUNCTION
        Copies the essential contents of a tagItem list.  Internally,
        it uses AllocateTagItems() so that you can use FreeTagItems().

    INPUTS
        tagList         - TagItem list to clone.

    RESULT
        newTagList      - resultant copy.

    BUGS

    SEE ALSO
        AllocateTagItems(), FreeTagItems(), RefreshTagItemClones()

utility.library/Date2Amiga                         utility.library/Date2Amiga

   NAME
        Date2Amiga -- Calculate seconds from 01-Jan-1978.  (V36)

   SYNOPSIS
        AmigaTime = Date2Amiga( Date )
        D0                      A0

        ULONG Date2Amiga( struct ClockData * );

   FUNCTION
        Calculates the number of seconds from 01-Jan-1978 to the date
        specified in the ClockData structure.

   INPUTS
        Date            - pointer to a ClockData structure containing the
                          date of interest.

   RESULTS
        AmigaTime       - the number of seconds from 01-Jan-1978 to the
                          date specified in Date.

   NOTES
        This function does no sanity checking of the data in Date.

   SEE ALSO
        Amiga2Date(), CheckDate()

   BUGS

utility.library/FilterTagChanges             utility.library/FilterTagChanges

    NAME
        FilterTagChanges -- Eliminate TagItems which specify no change. (V36)

    SYNOPSIS
        FilterTagChanges( changeList, oldValues, apply)
                          A0          A1         D0

        void FilterTagChanges( struct TagItem *changeList,
                               struct TagItem *oldValues, LONG apply );

    FUNCTION
        Eliminate items from a "change list" that specify values already
        in effect in existing list.  Optionally update the existing list
        if the Boolean 'Apply' is true.

        The elimination is done by changing the ti_Tag field to TAG_IGNORE.
        So, this function may change the input tag list(s).

    INPUTS
        changeList      - specification of new tag-value pairs.
        oldValues       - a list of existing tag item pairs.
        apply           - Boolean specification as to whether the values in
                          oldValues are to be updated to the values in
                          changeList.

    RESULT
        None.

    EXAMPLE
        Assume you have an attribute list for an object (oldValues)
        which looks like this:

                ATTR_Size,  "large",
                ATTR_Color, "orange",
                ATTR_Shape, "square",

        If you receive a new TagList containing some changes (changeList),
        which looks like this:

                ATTR_Size,  "large",
                ATTR_Shape, "triangle"

        If you call FilterTagChanges(), changeList will be modified to
        contain only those attributes which are different from the
        oldValues.  All other tagitems will have their tag-values set to
        TAG_IGNORE.  The resulting changeList will become:

                TAG_IGNORE, "large",
                ATTR_Shape, "triangle"

        If apply was set to TRUE, oldValues would be:

                ATTR_Size,  "large"
                ATTR_Color, "orange"
                ATTR_Shape, "triangle"

    BUGS

    SEE ALSO

utility.library/FilterTagItems                 utility.library/FilterTagItems

    NAME
        FilterTagItems - Remove selected items from a TagItem list. (V36)

    SYNOPSIS
        nvalid = FilterTagItems(tagList, tagArray, logic)
        D0                     A0       A1        D0

        ULONG FilterTagItems(struct TagItem *tagList, Tag *tagArray,
                             LONG logic);

    FUNCTION
        Removes TagItems from a TagItem list (by changing ti_Tag to
        TAG_IGNORE) depending on whether its ti_Tag value is
        found in an array of TagValues.

        If the 'logic' parameter is TAGFILTER_AND, then all items
        not appearing in the list are excluded.

        If 'logic' is TAGFILTER_NOT, then items not found in the
        array are preserved, and the ones in the array are cast out.

    INPUTS
        tagList         - input list of tag items which is to be filtered
                          by having selected items changed to TAG_IGNORE.
        tagArray        - an array of Tag values, terminated by TAG_END,
                          as specified in the notes on TagInArray().
        logic           - specification whether items in TagArray are to
                          be included or excluded in the filtered result.

    RESULT
        nvalid          - number of valid items left in resulting filtered
                          list.

    BUGS

    SEE ALSO
        TagInArray()

utility.library/FindTagItem                       utility.library/FindTagItem

    NAME
        FindTagItem -- Scans TagItem list for a Tag. (V36)

    SYNOPSIS
        tag = FindTagItem( tagVal, tagList)
        D0                 D0      A0

        struct TagItem *FindTagItem( Tag tagVal, struct TagItem *tagList );

    FUNCTION
        Scans a TagItem "List", which is in fact a chain of arrays
        of TagItem structures as defined in utility/tagitem.h.
        Returns a pointer to the FIRST item with ti_Tag matching the
        'TagVal' parameter.

    INPUTS
        tagVal          - Tag value to search for.
        tagList         - beginning of TagItem list to scan.

    RESULT
        Returns a pointer to the item with ti_Tag matching 'TagVal'.
        Returns NULL if there is no match or if TagList is NULL.

    BUGS

    SEE ALSO
        utility/tagitem.h, GetTagData(), PackBoolTags(), NextTagItem()

utility.library/FreeTagItems                     utility.library/FreeTagItems

    NAME
        FreeTagItems --  Frees allocated TagItem lists. (V36)

    SYNOPSIS
        FreeTagItems( tagList )
                        A0

        void FreeTagItems( struct TagItem *tagList );

    FUNCTION
        Frees the memory of a TagItem list allocated either by
        AllocateTagItems() or CloneTagItems().

    INPUTS
        TagList         - list to free.  Must be created by functions
                          specified. A value of NULL for 'tagList' is safe.

    RESULT
        None.

    BUGS

    SEE ALSO
        AllocateTagItems(), CloneTagItems()

utility.library/GetTagData                         utility.library/GetTagData

    NAME
        GetTagData -- Obtain data corresponding to Tag. (V36)

    SYNOPSIS
        value = GetTagData(tagVal, default, tagList)
        D0                 D0      D1       A0

        ULONG GetTagData(Tag TagVal, ULONG Default, struct TagItem *TagList)

    FUNCTION
        Searches a TagItem list for a matching Tag value, and returns the
        corresponding ti_Data value for the TagItem found.  If none
        found, will return the value passed it as 'default'.

    INPUTS
        tagVal          - Tag value to search for.
        default         - value to be returned if tagVal is not found.
        tagList         - the TagItem list to search.

    RESULT
        value           - The ti_Data value for first matching TagItem, or
                          'default' if a ti_Tag matching 'Tag' is not found.

    BUGS

    SEE ALSO
        utility/tagitem.h, FindTagItem(), PackBoolTags(), NextTagItem()

utility.library/MapTags                               utility.library/MapTags

    NAME
        MapTags -- Convert ti_Tag values in a list via map pairing. (V36)

    SYNOPSIS
        MapTags(tagList, mapList, includeMiss)
                A0       A1       D0

        void MapTags(struct TagItem *tagList, struct TagItem mapList,
                     LONG includeMiss);

    FUNCTION
        Apply a "mapping list" mapList to tagList:

        If the ti_Tag field of an item in tagList appears as ti_Tag in some
        item in mapList, overwrite ti_Tag with the corresponding ti_Data
        from the map list.

        If a tag in tagList does not appear in the mapList, you can choose
        to have it removed by changing it to TAG_IGNORE. Do this by setting
        includeMiss to FALSE.

        If you want to have items which do not appear in the mapList
        survive the mapping as-is, set includeMiss to 1.

        This is central to gadget interconnections where you want
        to convert the tag values from one space (the sender) to
        another (the receiver).

    INPUTS
        tagList         - Input list of tag items which is to be mapped
                          to Tag values as specified in mapList.
        mapList         - a "mapping list" tagItem list which pairs Tag
                          values expected to appear in tagList with new
                          values to be substituted in the ti_Tag fields of
                          tagList.  May be NULL, which means that all items
                          in tagList will be eliminated.
        includeMiss     - 0 to remove tags from tagList not in mapList,
                          1 to remove

    RESULT
        None.

    EXAMPLE
        /* Consider this source list: */
            struct TagItem list[] = {
                { MY_SIZE,      71 },
                { MY_WEIGHT,    200 },
                { TAG_END,      } };

        /* And the mapping list: */
            struct TagItem map[] = {
                { MY_SIZE,      HIS_TALL },
                { TAG_END,      } };

        /* Then after MapTags( list, map, 0 ), 'list' will become: */
                { HIS_TALL, 71 },
                { TAG_IGNORE, },
                { TAG_END, }

        /* Then after MapTags( list, map, 1 ), 'list' will become: */
                { HIS_TALL, 71 },
                { MY_WEIGHT, 200 },
                { TAG_END, }

    NOTES
        The procedure will change the values of the input tag list
        tagList (but not mapList).

        You can "filter" a list by passing includeMiss as 0, and having the
        data items in the map list equal the corresponding tags.

        You can perform the inverse filter ("everything but") by passing
        includeMiss equal to 1, and creating a map item for every tag you
        want to filter out, pairing it with a mapped data value of
        TAG_IGNORE.

        For safety and "order independence" of tag item arrays, if you
        attempt to map some tag to the value TAG_END, the value TAG_IGNORE
        will be substituted instead.

    BUGS

    SEE ALSO

utility.library/NextTagItem                       utility.library/NextTagItem

    NAME
        NextTagItem -- Iterate TagItem lists. (V36)

    SYNOPSIS
        next_tag = NextTagItem( tagItemPtr )
        D0                      A0

        struct TagItem *NextTagItem( struct TagItem **tagItemPtr );

    FUNCTION
        Iterates through a (chained) array of TagItem structures,
        skipping and chaining as dictated by system tags.  TAG_SKIP
        will cause it to skip the entry and the next, TAG_IGNORE ignores
        that single entry, and TAG_MORE has a pointer to another array
        of tags (and terminates the current array!)  TAG_DONE also
        terminates the current array.  Each call returns either the next
        tagitem you should examine, or NULL at the end.

    INPUTS
        tagItemPtr      - doubly-indirect reference to a TagItem structure.
                          The pointer will be changed to keep track of the
                          iteration.

    RESULT
        next_tag        - Each TagItem in the array or chain of arrays that
                          should be processed according to system Tag values
                          (in utility/tagitem.h) is returned in turn with
                          successive calls.

    EXAMPLE
        Iterate( struct TagItem *tags );
        {
                struct TagItem *tstate;
                struct TagItem *tag;

                tstate = tags;
                while ( tag = NextTagItem( &tstate ) )
                {
                        switch ( tag->ti_Tag )
                        {
                        case TAG1:
                            ...
                            break;
                        case TAG2:
                            ...
                            break;
                        ...
                        }
                }
        }

    NOTES
        Do NOT use the value of *tagItemPtr, but rather use the pointer
        returned by NextTagItem().


    BUGS

    SEE ALSO
        utility/tagitem.h, GetTagData(), PackBoolTags(), FindTagItem()

utility.library/PackBoolTags                     utility.library/PackBoolTags

    NAME
        PackBoolTags --  Builds a "Flag" word from a TagList. (V36)

    SYNOPSIS
        boolflags = PackBoolTags( initialFlags, tagList, boolMap )
        D0                        D0            A0       A1

        ULONG PackBoolTags( ULONG initialFlags, struct TagItem *tagList,
                            struct TagItem *boolMap );

    FUNCTION
        Picks out the Boolean TagItems in a TagItem list and converts
        them into bit-flag representations according to a correspondence
        defined by the TagItem list 'BoolMap.'

        A Boolean TagItem is one where only the logical value of
        the ti_Data is relevant.  If this field is 0, the value is
        FALSE, otherwise TRUE.


    INPUTS
        initialFlags    - a starting set of bit-flags which will be changed
                          by the processing of TRUE and FALSE Boolean tags
                          in tagList.
        tagList         - a TagItem list which may contain several TagItems
                          defined to be "Boolean" by their presence in
                          boolMap.  The logical value of ti_Data determines
                          whether a TagItem causes the bit-flag value related
                          by boolMap to set or cleared in the returned flag
                          longword.
        boolMap         - a TagItem list defining the Boolean Tags to be
                          recognized, and the bit (or bits) in the returned
                          longword that are to be set or cleared when a
                          Boolean Tag is found to be TRUE or FALSE in
                          tagList.

    RESULT
        boolflags       - the accumulated longword of bit-flags, starting
                          with InitialFlags and modified by each Boolean
                          TagItem encountered.

    EXAMPLE

        /* define some nice user tag values ... */
        enum mytags { tag1 = TAG_USER+1, tag2, tag3, tag4, tag5 };

        /* this TagItem list defines the correspondence between Boolean tags
         * and bit-flag values.
         */
        struct TagItem  boolmap[] = {
            { tag1,  0x0001 },
            { tag2,  0x0002 },
            { tag3,  0x0004 },
            { tag4,  0x0008 },
            { TAG_DONE }
        };

        /* You are probably passed these by some client, and you want
         * to "collapse" the Boolean content into a single longword.
         */

        struct TagItem  boolexample[] = {
            { tag1,  TRUE },
            { tag2,  FALSE },
            { tag5, Irrelevant },
            { tag3,  TRUE },
            { TAG_DONE }
        };

        /* Perhaps 'boolflags' already has a current value of 0x800002. */
        boolflags = PackBoolTags( boolflags, boolexample, boolmap );

        /* The resulting new value of 'boolflags' will be 0x80005. /*

    BUGS
        There are some undefined cases if there is duplication of
        a given Tag in either list.  It is probably safe to say that
        the *last* of identical Tags in TagList will hold sway.

    SEE ALSO
        utility/tagitem.h, GetTagData(), FindTagItem(), NextTagItem()

utility.library/RefreshTagItemClones     utility.library/RefreshTagItemClones

    NAME
        RefreshTagItemClones -- Rejuvenates a clone from the original. (V36)

    SYNOPSIS
        RefreshTagItemClones( cloneTagItems, originalTagItems )
                              A0             A1

        void RefreshTagItemClones( struct TagItem *cloneTagItems,
                                  struct TagItem *originalTagItems );

    FUNCTION
        If (and only if) the tag items 'cloneTagItems' were created
        from 'originalTagItems' by CloneTagItems(), and if originalTagItems
        has not been changed in any way, you can reset the clone list
        to its original state by using this function.

    INPUTS
        CloneTagItems   - return value from CloneTagItems(originalTagItems).
        OriginalTagItems- a tag list that hasn't changed.

    RESULT
        None.

    EXAMPLE

    BUGS

    SEE ALSO
        CloneTagItems(), AllocateTagItems(), FreeTagItems()

utility.library/SDivMod32                           utility.library/SDivMod32

   NAME
        SDivMod32 -- Signed 32 by 32 bit division and modulus. (V36)

   SYNOPSIS
        Quotient:Remainder = SDivMod32( Dividend, Divisor )
        D0       D1                     D0        D1

        LONG SDivMod32( LONG, LONG );

   FUNCTION
        Divides the signed 32 bit dividend by the signed 32 bit divisor
           and returns a signed 32 bit quotient and remainder.

   INPUTS
        Dividend        - signed 32 bit dividend.
        Divisor         - signed 32 bit divisor.

   RESULTS
        Quotient        - signed 32 quotient of the division.
        Remainder       - signed 32 remainder of the division.

   NOTES

   SEE ALSO
        SMult32(), UDivMod32(), UMult32()

   BUGS

utility.library/SMult32                               utility.library/SMult32

   NAME
        SMult32 -- Signed 32 by 32 bit multiply with 32 bit result. (V36)

   SYNOPSIS
        Result = SMult32( Arg1, Arg2 )
        D0                D0    D1

        LONG SMult32( LONG, LONG );

   FUNCTION
        Returns the signed 32 bit result of multiplying Arg1 by Arg2.

   INPUTS
        Arg1, Arg2      - signed multiplicands.

   RESULTS
        Result          - the signed 32 bit result of multiplying
                          Arg1 by Arg2.

   NOTES

   SEE ALSO
        SDivMod32(), UDivMod32(), UMult32()

   BUGS

utility.library/Stricmp                               utility.library/Stricmp

    NAME
        Stricmp --  Case-insensitive string compare. (V37)

    SYNOPSIS
        res = Stricmp(string1, string2)
        D0              A0       A1

        LONG Stricmp(char *, char *);

    FUNCTION
        Stricmp compares two strings, ignoring case.  It handles all
        internationalization issues.  If the strings have different lengths,
        the shorter is treated as if it were extended with zeros.

    INPUTS
        string1, string2 - strings to be compared

    RESULT
        res - negative if string1 is below string2, 0 if they're the same, and
              positive if string1 is above string2.

    NOTES
        Commodore is planning a localization library which will take care
        of most details pertaining to system integration into different
        cultures, locales, and territories.

        This function will automatically be replaced by a localized version
        whenever the locale.library is loaded in memory. As such, the
        collating order may change depending on the locale currently
        defined by the user. Take this fact into consideration when using
        this function, and do not rely on obtaining specific collating
        sequences.

    BUGS

    SEE ALSO
        Strnicmp()

utility.library/Strnicmp                             utility.library/Strnicmp

    NAME
        Strnicmp--  Case-insensitive string compare, length-limited. (V37)

    SYNOPSIS
        res = Strnicmp(string1, string2, length)
        D0              A0       A1        D0

        LONG Strnicmp(char *, char *, LONG length);

    FUNCTION

        Strnicmp compares two strings, ignoring case.  It handles all
        internationalization issues.  If the strings have different lengths,
        the shorter is treated as if it were extended with zeros.  It never
        compares more than <length> characters.

    INPUTS
        string1, string2 - strings to be compared
        length           - maximum number of characters to examine

    RESULT
        res - negative if string1 is below string2, 0 if they're the same, and
              positive if string1 is above string2.

    NOTES
        Commodore is planning a localization library which will take care
        of most details pertaining to system integration into different
        cultures, locales, and territories.

        This function will automatically be replaced by a localized version
        whenever the locale.library is loaded in memory. As such, the
        collating order may change depending on the locale currently
        defined by the user. Take this fact into consideration when using
        this function, and do not rely on obtaining specific collating
        sequences.

    BUGS

    SEE ALSO
        Stricmp()

utility.library/TagInArray                         utility.library/TagInArray

    NAME
        TagInArray  -- Check if a Tag value appears in a Tag array. (V36)

    SYNOPSIS
        BOOL TagInArray( tag, tagArray )
        D0               D0   A0

        BOOL TagInArray( Tag tag, Tag *tagArray);

    FUNCTION
        Perform a quick scan to see if a tag value appears in
        an array terminated with TAG_END.  Returns TRUE if
        the value is found.

        The 'tagArray' must be terminated by TAG_END.  It should
        NOT contain other system tag values, such as TAG_MORE
        or TAG_IGNORE.  Note that this is an array of Tag values, NOT
        an array of TagItems.

        This is sort of a "one shot" version of FilterTagItems().

    INPUTS
        tag             - Tag value to search array for.
        tagArray        - a simple array terminated by TAG_END.

    RESULT
        Boolean success of search.

    BUGS

    SEE ALSO
        FilterTagItems()

utility.library/ToLower                               utility.library/ToLower

    NAME
        ToLower - Convert a character to lowercase. (V37)

    SYNOPSIS
        char = ToLower(char)
        D0              D0

        char ToLower(char);

    FUNCTION
        Converts a character to lowercase, handling international character
        sets.

    INPUTS
        char - character to be converted.

    RESULT
        char - lowercase version of input character.

    NOTES
        Commodore is planning a localization library which will take care
        of most details pertaining to system integration into different
        cultures, locales, and territories.

        This function will automatically be replaced by a localized version
        whenever the locale.library is loaded in memory. As such, the
        resulting converted character may change depending on the locale
        currently defined by the user. Take this fact into consideration when
        using this function, and do not rely on obtaining specific
        conversions.

    BUGS

    SEE ALSO

utility.library/ToUpper                               utility.library/ToUpper

    NAME
        ToUpper - Convert a character to uppercase. (V37)

    SYNOPSIS
        char = ToUpper(char)
        D0              D0

        char ToUpper(char);

    FUNCTION
        Converts a character to uppercase, handling international character
        sets.

    INPUTS
        char - character to be converted.

    RESULT
        char - uppercase version of input character.

    NOTES
        Commodore is planning a localization library which will take care
        of most details pertaining to system integration into different
        cultures, locales, and territories.

        This function will automatically be replaced by a localized version
        whenever the locale.library is loaded in memory. As such, the
        resulting converted character may change depending on the locale
        currently defined by the user. Take this fact into consideration when
        using this function, and do not rely on obtaining specific
        conversions.

    BUGS

    SEE ALSO

utility.library/UDivMod32                           utility.library/UDivMod32

   NAME
        UDivMod32 -- Unsigned 32 by 32 bit division and modulus. (V36)

   SYNOPSIS
        Quotient:Remainder = UDivMod32( Dividend, Divisor )
        D0       D1                     D0        D1

        ULONG UDivMod32( ULONG, ULONG );

   FUNCTION
        Divides the unsigned 32 bit dividend by the unsigned 32 bit divisor
        and returns a unsigned 32 bit quotient and remainder.

   INPUTS
        Dividend        - unsigned 32 bit dividend.
        Divisor         - unsigned 32 bit divisor.

   RESULTS
        Quotient        - unsigned 32 quotient of the division.
        Remainder       - unsigned 32 remainder of the division.

   NOTES

   SEE ALSO
        SDivMod32(), SMult32(), UMult32()

   BUGS

utility.library/UMult32                               utility.library/UMult32

   NAME
        UMult32 -- Unsigned 32 by 32 bit multiply with 32 bit result. (V36)

   SYNOPSIS
        Result = UMult32( Arg1, Arg2 )
        D0                D0    D1

        ULONG UMult32( ULONG, ULONG );

   FUNCTION
        Returns the unsigned 32 bit result of multiplying Arg1 by Arg2.

   INPUTS
        Arg1, Arg2              - unsigned multiplicands.

   RESULTS
        Result                  - the unsigned 32 bit result of
                                  multiplying Arg1 by Arg2.

   NOTES

   SEE ALSO
        SDivMod32(), SMult32(), UDivMod32()

   BUGS