[Search for users]
[Overall Top Noters]
[List of all Conferences]
[Download this site]
Title: | AMIGA NOTES |
Notice: | Join us in the *NEW* conference - HYDRA::AMIGA_V2 |
Moderator: | HYDRA::MOORE |
|
Created: | Sat Apr 26 1986 |
Last Modified: | Wed Feb 05 1992 |
Last Successful Update: | Fri Jun 06 1997 |
Number of topics: | 5378 |
Total number of notes: | 38326 |
4173.0. "Aztec users - upgrade" by WJG::GUINEAU () Thu Oct 04 1990 17:01
Article 66532 of comp.sys.amiga:
From: [email protected] (Dale Larson)
Newsgroups: comp.sys.amiga
Subject: Announcing Manx/Aztec 5.0d
I am associated with Manx only as a customer and a beta tester
for 5.0. I don't know how much the upgrade is, though I think that
it is $15 if you already have 5.0. Please do not send questions to
me. Please call Manx at 1-800-221-0440 or email Mike Spille at the
address below. Since Mike is a programmer, please don't bother him
with price/ordering info questions.
BTW, if you want info from Manx posted to the net regularly, you might
mention when you order (or in mail to Mike) where you got your information
from.
---------
Date: 25 Sep 90 17:16:14 EDT
From: Mike Spille/Manx <[email protected]>
To: <[email protected]>
Following is the read.me file for 5.0d (which is available as of this
week). You might want to post it on the net.
Aztec C for the Amiga
Version 5.0d
Release Notes
September 20, 1990
Version 5.0d is primarily a minor update of the Aztec C system which fixes
major problems in v5.0b. We have kept new-features in this release to a
minimum in order to insure the stability of the release.
See the 50bread.me file for a list of changes from version 5.0a to version
5.0b.
-------------------------------
New Features Since 5.0b
-------------------------------
Compiler
--------
- C++ style comments are now supported (// to end of line).
- The compiler by default now only uses register A6 for amicall/syscall
#pragmas. This usually results in better code generation, since
A6 doesn't need to be continually pushed and popped when #pragma calls
are done. In this default mode the compiler never saves the A6 register.
- A new option -r6 has been added to the compiler, which allows the
compiler to use A6 as register variables. A6 is also always guaranteed
to be preserved. This option should be used if you are generating code
which needs A6 to be preserved. Also, if your code makes few amicall
pragma calls this option may improve code generation.
- The -qv switch now dynamically reports where it is in the compilation
process. While processing the main source file it reports the current
line #, and while processing header files it reports the header file
name.
- The -t option has been added to specify the maximum number of base
names defined in amicall/syscall #pragmas. The syntax of this option
is:
-t num_entries
where num_entries is the maximum number of base names entries allowed.
The default value is 50.
Assembler
---------
- The assembler optimizes out 0-register movem operations when optmization
is turned on.
- The -w switch has been added to the assembler, which turns on
optimization of 1 register movem's into move instructions. This option
should never be used on compiler-generated assembly code.
SDB
----
- SDB no longer requires the use of the -s option for programs with source
in multiple directories. It will instead attempt to use the path
information used to compile the source code. i.e. if the source
was compiled as /front/foobar.c, then SDB will look for the file
'foobar.c' in the /front directory. This behavior may be overridden by
defining explicit search directories using the -s option.
Libraries
---------
- Four new functions have been added to the library: stricmp(), strnicmp(),
strlwr(), and strupr().
int stricmp(const char *_s1, const char *_s2);
This function is identical to the strcmp() function, with the
exception that the comparison between the two strings is case
insensitive (i.e., "foobar" and "FooBar" are considered equivalent
to stricmp()).
int strnicmp(const char *_s1, const char *_s2, size_t _n);
This function is identical to the strncmp() function, with the
exception that the comparison between the two strings is case
insensitive (i.e., "foobar" and "FooBar" are considered equivalent
to strnicmp()).
char *strlwr (char *str);
This function converts the string pointed to by 'str' into all
lower case. All non alphabetic characters within the string are
left as they are. A pointer to the the converted string is
returned by strlwr. Note that the original string pointed to
('str') is destroyed.
char *strupr (char *str);
This function converts the string pointed to by 'str' into all
upper case. All non alphabetic characters within the string are
not affected. A pointer to the the converted string is
returned by strupr. Note that the original string pointed to
('str') is destroyed.
HEADERS
-------
- NULL is now defined to be 0L instead of (void *)0, so that comparisons
with BPTRs and other integer-typed objects don't give a ptr/int error.
- The value of CLOCKS_PER_SEC has been changed to 50, to reflect the
values returned by the clock() function.
- The macros EXIT_FAILURE and EXIT_SUCCESS are now defined in stdlib.h.
- Internal Manx functions which have leading underscores (such as _flsbuf)
are now always prototyped.
- Header files for AmigaDOS 2.0 are now included with the 5.0d update
disks. The 2.0 header files are not available via Bix or the Aztec BBS,
but only through our update department.
-------------------------
Fixed from 5.0b
-------------------------
Following is a list of known problems with version 5.0a, which are fixed
in version 5.0b.
Compiler
--------
- Right shifts on unsigned char and unsigned short variables were done
incorrectly.
- Division on unsigned short and unsigned char variables, with the result
being placed into an unsigned int or short, were done incorrectly.
- If a function with a short argument was defined using K&R style and had
a function prototype in scope, the compiler generated bad code. For
example:
void MSFunc (short num);
main ()
{
MSFunc (5);
}
void
MSFunc (num)
short num;
{
printf ("%d\n", num);
}
In version 5.0d, the function prototype must be changed to read:
void MSFunc (int num);
which is consistent with how chars and floats are handled in prototyping
K&R functions. Alternatively, the function can be declared using ANSI
style, and the prototype may be left as is (i.e., as a short).
- Bad code was generated if the -c2 (68020) switch was used and a %
operation was done with a register variable.
- The compiler generated bad code if more than 20 base names for amicall
and syscall #pragmas were found. The default maximum in 5.0d is 50 base
names, and the compiler will give an error if the maximum is exceeded
(see also the -t option added in 5.0d).
- The compiler put out bad type information for pointers, which caused
array indexing in SDB to be incorrect.
- The compiler generated bad code if functions which had amicall #pragmas
attached to them were nested. For example:
LoadRGB4 (ViewPortAddress(window),colors,number);
would generate bad code.
- The compiler generated bad code in the small code/small data model for
function defintions which had a register-argument #pragma that
specified A4 as an argument register.
- #pragmas involving register arguments (amicall, regcall, etc.) would
generate bad assembly code if an argument was of type double. The
compiler now issues error #168 if it encounters a double argument in a
registerized function call.
- The -ss option is generated bad code. The 5.0d compiler accepts it as an
option, but turns it off internally.
- The compiler would reference low memory locations.
- Bad code was generated in some instances when accessing variables with
volatile or const modifiers.
- Bad code was generated for the following type of C source:
struct table {
short Index;
short Array[2];
} table;
register short i;
short *ip;
register struct table *sp;
i = *(ip = &sp->Array[sp->Index]);
SDB
---
- The SDBOPT variable is now correctly recognized by SDB.
- SDB is now more reliable upon startup and tracing across Amiga DOS
resident library calls.
- SDB no longer writes into its window borders, which was noticeable under
2.0 of AmigaDOS.
LIBRARIES
---------
- The scanf() family of functions would switch to base 8 (octal) if the
number being scanned had a leading 0 and the %x format specifier was
used. 5.0d always uses base 16 when a %x specifier is used, as per
the ANSI standard.
- The clock() function always returned -1.
- The strtok() function would in certain circumstances reference location
0 in memory.
- The ioctl() function would reference low memory.
MISC
----
- The linker ln would access low memory between pass 1 and pass 2.
- The assembler would access low memory when performing optimization.
- Z now looks for the ZOPT environment variable in ENV:MANX instead of
the proprietary manx environment.
- Z would reference low memory locations upon startup.
- The mapfd utility can now handle lines in .fd files up to 2K in length.
Previous versions only allowed lines 128 bytes long.
-Mike
--
-Dale Larson ([email protected])
T.R | Title | User | Personal Name | Date | Lines
|
---|