home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Gold Fish 1
/
GoldFishApril1994_CD2.img
/
d4xx
/
d443
/
dice
/
version.doc
< prev
next >
Wrap
Text File
|
1991-01-20
|
13KB
|
337 lines
VERSION.DOC
DICE
VERS DES COMMENT
VERS = Release Version
DES = bug fixed / feature designator
XB - major bug fixed in main compiler
(use of routine in question could have caused a crash)
B - minor bug fixed in main compiler
F - feature added
O - optimization added
ADD - feature added or fixed that is standard C but was not previously
implemented or working.
XBL - major bug fixed to library
BL - minor bug fixed to library
FL - feature added to library
OL - optimization added to library
XBA - major bug fixed in support program (i.e. not DCC or sub programs)
BA - minor bug fixed in support program
FA - feature added to support program (or new support program)
OA - optimization added to support program
COMMENT = comment or bug, feature
2.05.15
F BASIC REGISTERED ARGUMENTS ADDED. See -mr, -mR, and -mRR options
F prototype optimization. If a prototype says a procedure takes a
short, then DICE pushes a long (as usual). However, DICE will
no longer EXT the object before pushing it (upper word is garbage).
This works because the procedure, having declared the argument a
short, will only access the lower 16 bits.
2.05.14
B fgets() would overflow the buffer by one character when input lines
were larger than the buffer size.
B DCC would complain about output (-o) files ending in .h or .c when
they do not actually end in .h or .c ..
2.05.13
B DCC was supplying only a 2K stack to NON-RESIDENTED sub programs.
Oops.
F New floating point support for MATHIEEESING*.LIBRARY ... single
precision IEEE library. This is now the default since it is
more compatible with the double precision IEEE library for
conversions between single & double precision.
Use the -ffp option to DCC to use the old motorola fast floating
point single precision library. Note that the new ieee single
precision library may not exist on every computer.
2.05.12
B another bug with 'const static' items not properly aligning the
routine they were declared in (when declared within a procedure
definition). Fixed.
B pfmt has a local 64 byte buffer which used to be static. This is
illegal for the ROM.LIB version of sprintf() & vsprintf() and so I
have made this an auto instead. This fix does not effect Amiga C
programming though it does mean that [v]sprintf() may now be called
out of context or multi-threaded without mishap.
F qsort(), rand(), and srand() have been written.
B volatile was not being handled proper, 'volatile char *ptr' is
a pointer to a volatile char, NOT a volatile pointer, for
example.
2.05.11
F new library, ROM.LIB, contains only those routines from C.LIB that
are completely self contained (reference no static or global data,
or other routines. Use only autos if at all).
This library is included instead of C.LIB when the -rom option
to DCC is used (with the -rom option, amigas*.lib is not included
either, and it is up to the programmer to specify his own startup
module)
F char ary[0] and empty structs return errors, but a direct 'void'
declaration is allowed. i.e. 'void x;', useful in some cases.
F Specifying the 'register' keyword now adds some 'weight' to the
variable, perhaps giving it more of a chance of becomming a
register.
B DCPP was improperly handling token pasting (##), this has been
fixed.
B static const objects declared within a procedure not word-aligned
could cause the procedure code to not be word-aligned, thus
causing a software error.
F CONST object handling has been changed. Before 2.05.11 const
objects were not put into a CODE hunk unless the -ms or -mS options
are given to DCC. 2.05.11 and beyond put const qualified objects
in a code hunk regardless.
F C.O Modified. Any program run in the background with RUN will not
attempt to Open("*",..) to get the stderr channel but instead
will use the stdout descriptor if it exists. This allows programs
to be detached from a CLI (i.e. that you can run a program and
then close the CLI window without mishap)
F -020, -030, -881, -882 options formally added (currently -020/-030
are the same and -881/-882 are the same)
-020: uses EXTB.L (no major support has been added yet)
B DSEARCH had a bug... when multiple files are scanned it would miss
lines in the second file and beyond!
F oops, const items in the library were not placed in the code
section. This effects <ctype.h> ... you must recompile any
source files that use <ctype.h> macros since the access method
is now pc-relative instead of data-relative.
The fix is more pertainent to ROMd applications that use <ctype.h>
... the lookup tables are no longer copied into RAM for such
applications.
2.05.10
F __config and __shared type qualifiers added
B --var; generated an internal error
2.05.09
B switch() did not generate proper code when default: label was not
placed last and fell through to another case, or a case before
the default fell through to it when default: was not placed last.
B comma operator bug fixed (would cause fatal internal error in
some cases)
B a[i] = a[j] = a[k] ... = x; ran out of registers if too many
assignments. This has been fixed.
2.05.08
B fixed random-memory-read bug in DLink (did not effect linking, but
would sometimes read the custom-chip area causing screen glitches
and other mishaps). (dlink .02)
BL access() fixed, returns true if checking for existance on an
object which is currently locked exclusively by somebody else.
B DICE would give a prototype argument mismatch warning when the
proto says array-of and the declaration says pointer-to, when
for function args these mean the same thing. This has been fixed.
B DICE now checks for duplicate case statements
B error in indexed structure copies, struct foo AR[16][16];
foo[i][j] = foo[k][l]; fixed (would give fatal error message before).
XB MAJOR fix to type qualifiers.. __far, __near, __chip, __aligned,
etc... all work properly now when specified in complex objects
(e.g. arrays)
B global initialization that assigns the address of an array was
broken (would give fatal error message). Now fixed.
XB bug fixed when casts of pointer constants occured,
short = *(long *)0x0 improperly read the word at location 0, it
should have read the word at location 2!.
F -ms, -mS, -ms0 options added (placement of const data), see DCC.DOC.
THIS IS A GREAT OPTION (-ms) WHEN USED ALONG WITH -r !
-SD -SB added to DC1 (proly not useful to anybody)
__far declared data is now placed in a different section, allowing
the small-data model to be used when more than 64K of data
exists without fancy rearrangement of junk.
F DICE is now able to generate ROMable code via new options and
utilities, with full support for r/w initialized data items and use
of the absolute.W addressing mode instead of the small-data model.
B array of const now properly becomes a const array of const.
B volatile auto storage no longer put in registers (refer to setjmp
manual page)
O DICE executables take somewhat less run-time memory due to
being compiled with the -ms option, especially when multiple
instances are running simultaniously.
O new options added to DOBJ (-nc and -nd to show symbols only)
F better code for large switches (binary subdivision method, aprox
4x speed increase for large switches)
B switch() did not generate proper code when the overall switch
range is larger than 0x7FFFFFFF (i.e. highest - lowest)
2.05.07
F -proto option added ... generates an error for any function call
that does not have a prototype
B struct foo *y = &x[0]; where sizeof(struct foo) not a power of 2 (x
is an array of foo) in global or static declaration would cause
fatal error. Fixed.
B Various fixes to the preprocessor
2.05.06
ADD DAS now supports all 68000 opcodes
B trigraph sequences now supported (??x)
B minor bug in assembler that generated an infinite length object file
(due to a specific error condition) fixed, now exits gracefully.
F DOBJ now part of registered distribution (object code disassembler)
B forgot to include DME.DOC !
B STDDEF.H changed, the offsetof() macro no longer prefixes the type
with the 'struct' keyword.
B complex procedural types now work. e.g.
extern void (*signal(int, void (*)(int)))(int);
ADD cpp #line directive (supports yacc generated source files)
2.05 RELEASE (REG UPDATE #2)
(DC1 2.05.05)
B small bug (caught by assembler). int a[4]; (a-2)[c] = 0;
would cause bad assembly to be output.
B now reports error for exp.field where exp is not a structure.
(CPP 2.05.04)
B cpp not counting lines right (generates error reports
specifying the wrong line number)
2.05 RELEASE DC1 2.05.04 (REG UPDATE #1)
XB array indexing not of a power of 2 (i.e. req's multiply)
destroyed temporaries in scratch registered.
2.05 RELEASE (REG RELEASE)
ADD prototypeing works properly now.
BL gets would not return last line of file if last line did not
terminate with a newline.
BL fgets would not return last line of file if last line did not
terminate with a newline. Also, fgets did not return a pointer
to the base of the passed buffer for valid lines
B compiler used to allow unbalanced parenthesis... this has been
fixed. i.e. return(10; reports an error as it should.
B bugs in the preprocessor fixed having to do with macro recursion
2.04
XBL strftime() did not \0 terminate the buffer in all cases
BA libtos() would not modify PotgoBase into the small-data model
B DC1 would generate lea An,An which is an illegal instruction.
This is caught and reported by DAS.
B DC1 would generate a move.0 (caught by assembler) when passing
an argument to a prototyped function using the array declaration
form instead of a pointer form, i.e. foo(char buf[], int y, ...);
O MULS/MULU optimizations added (long = short * short)
O ptr - ptr operation: ASR now used when possible instead of a
long divide.
F linker now supports qualified hunks (e.g. CHIP ram hunks, etc...)
ADD partially implemented # (string-ize) and ## (token pasting)
operators in preprocessor. Fixed a macro bug in preprocessor
(that used to generate an error message).
BL [s/f]scanf() improperly included %*<spec> objects in the
returned count. This has been fixed.
O More small optimizations added that now result in at least a
2-3% improvement in code size. Amoung other things,
moveq+swap used to load large integer values when possible and
clr.l -(sp) is used instead of pea 0.W .
XB WORKBENCH SUPPORT FIXED. Previously the exit code would return
the workbench message and then proceed to make additional calls
that could break the Forbid(), thus causing the workbench to
unload the segment before the code has completed execution.
_WBMsg, if non-NULL, is now returned just after a Forbid() and
just before the final register restore/rts of the program.
------ REGISTERED RELEASE ($40 shareware fee) ------
ADD Floating point for float's and double's has been implemented
but some deficiencies (such as not all library routines have
been implemented) still exist. Compile time constant fp
operations are done in 128-bit mantissa format using a base 10
exponent (i.e. no base conversion error factors).
F __near, __far, and __chip keywords have been implemented. Note
however that programs containing __far and __chip keywords may
not be made resident.
ADD bitfields have been added and should now work in most cases.
Comparisons of bitfields only work in the == 0 and != 0
cases (this includes if (bitfield) and if (!bitfield)
constructions).
Bitfields are word aligned and packed into words (16 bits),
though a bit field itself may be up to 32 bits in size. Some
optimizations have been implemented.
2.03 Internal Intermediate Version
2.02
BL open() was broken in 2.01, causing fopen(..., "w") to not
truncate the file. Dumb Dumb Dumb.
2.01
BL fflush() and fopen() were broken... file position was not
XBL Fixed var-args bug ... va_arg was not indirecting the
quantity but returned a pointer instead. pfmt and sfmt
had to be changed.
2.00
-- Initial shareware release