home *** CD-ROM | disk | FTP | other *** search
-
- (note, this is the full version.doc file, not everything applies to
- the freeware version of DICE)
-
-
- 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
- E - enhancement to existing feature
- 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.06.21
- E fixed register reallocation, should now do a better job
- allocating registers in complex subroutines. Hopefully squashed
- 'maximum retries exceeded' error for all but the most incredibly
- complex expressions.
-
- B fixed bug in int->float conversion, expressions such as:
- double x = (double)(a * b);
-
- E fixed somestuff that generated an infinite WARN loop.
-
- F DCC now creates the destination directory heirarchy if it does
- not exist. For example, when you DCC com/x.c the object file
- will be T:com/x.o, with T:com created if necessary.
-
- F DYNAMIC FUNCTION/VAR LIBARARY SUPPORT ADDED, see __dynamic
- explanation in DYNAMIC.DOC .
-
- F DCPP now accepts -Ddefine(vars..)=definition, it used to be
- able to only accept -Ddefine=value
-
- 2.06.20
- F TimerBase, for timer.device library calls, now has auto-open
- capability, meaning that you can simply call AddTime(), CmpTime(),
- SubTime(), and the new 2.0 calls (GetSysTime() & ReadEClock())
- without having to open the timer.device and set up TimerBase
- yourself.
-
- B bug in if (ptr & 1) and similar constructs doing a logical and
- in a compare against a pointer rather than an int produced
- bad code caught by DAS.
-
- B x.o was in c.lib, this is wrong... x.o must be the LAST file in
- any link and is included automatically by DCC when it runs DLINK.
-
- F additional example code in DCC2:examples -- a DOS handler and
- a shared library.
-
- 2.06.19
- B bug in dynamic stack code under 1.3 fixed
- B bug in workbench startup under 1.3 fixed
- B bug in register allocation fixed (would cause fatal error
- message 'too many retries' sometimes when procedure args
- declared as arrays instead of pointers)
-
- 2.06.18
- F several more libraries have auto-open capability
-
- B bug in DLINK fixed -- would GURU on large links due to an error
- in the allocation routines (relocation info larger than 4K would
- cause a GURU)
-
- 2.06.17
- F DCPP now scans DINCLUDE:PD/ for include files. This is where I
- will be putting .H files for various ports (such as the UNIX
- regexp port). This was done so as not to clutter the main
- DINCLUDE: and to differentiate between PD files and non-PD
- files.
-
- UNIX compatible .H files are usually placed in DINCLUDE: or
- DINCLUDE:SYS/
-
- F preprocessor now handles #if defined(symbol) properly (was
- previously not implemented)
-
- F BITFIELDS now 99% implemented! including signed/unsigned
- qualifications. The only thing that does not work is ++bitfield
- and --bitfield. Single-bit bitfields have been optimized.
- aggregate initialization of bitfields is still wanting. executable
- actually got smaller when I finally got down and fixed these up.
- No 020/030 support yet.
-
- F startup code modified to allow writes to desc 0, reads from desc 1,
- etc... at the file descriptor level but not the stdio level. This
- is to support some UNIX programs which do this.
-
- BL bug in [f]putc() fixed -- [f]putc() is supposed to return the put character,
- but did not do so in the case of a new line (putc), or
- at all (fputc).
-
- F NEW LIBRARY ROUTINESE: stat(), fstat(), getenv(), opendir(),
- readdir(), closedir(), rewinddir() (see MAN/UNIX.DOC)
-
- F chdir() now restores the original directory on exit
-
- F Dynamic Stacking added (-gs option). Somewhat primitive, but will
- get much better. This allows subroutines to be as deeply nested as
- required, allocating and deallocating stack frames when low stack
- conditions exist.
-
- F longjmp()/setjmp() now properly handle dynamic stacks
-
- B fixed another bug, this one having to do with the index address
- mode (An,Dn.x) combined with a binary operator.
-
- B fixed bug in FDTOLIB that screwed up register ordering.
-
- 2.06.16
- B fixed EXG bug in DAS, EXG As,Ad would generate Ds,Dd.. screwed
- up registered args (-mRR).
-
- B fixed bug in *= and /= combined w/ array indexing, things like
- temp[i] /= 23; would use the scratch regs for storage across
- the divide call.
-
- 2.06.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.
-
- B fixed token pasting bug in dcpp, a ## b ## c now works properly.
-
- F first registered distribution that includes the 2.0 includes,
- restructuring of 1.3 includes (now called 'amiga13' instead of
- 'amiga'), and restructuring of disks to make more space.
-
- 2.05.14
- BL 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
-
-
-