home *** CD-ROM | disk | FTP | other *** search
-
- (c) 1990 S.Hawtin.
- Permission is granted to copy this file provided that:
- 1) It is not used for commercial gain
- 2) This notice is included in all copies
- 3) Altered copies are marked as such
-
- No liability is accepted for the contents of the file.
-
- CHANGES within NorthC
-
- This file outlines some of the changes that have occurred to NorthC
- between releases.
-
- Release 1.3
- ***********
-
- 1.3.1 static strings in functions
-
- When I fixed initialised static arrays in functions I forgot about strings,
- these have now been fixed.
-
- 1.3.2 bsr in crt0.asm
-
- The startup routine in "crt0.asm" incorrectly called the _main() function
- with a "bsr __main", this would generate a 16 bit offset rather than the
- required 32 bit offset. The call has been changed to a jsr.
-
- 1.3.3 realloc
-
- The realloc() function did not return the correct value, this has been
- fixed, also the function did not accept NULL as the value for the pointer.
-
- 1.3.4 && and ||
-
- The && and || operators caused some problems, they used the instruction
- "clr d0" where they should have used "clr.l d0".
-
- 1.3.5 cc (from Richard Johnston)
-
- The "cc" program used the command "a68k" rather than "a68k -g", this
- caused cc to always fail in NorthC 1.2.
-
- 1.3.6 Floating point comparisons
-
- The floating point compare function had a bug, causing the less than
- function to fail, this has been fixed by a new version of the compiler.
- This also caused the floating point formats in printf() to fail.
-
- 1.3.7 Large values in switch statements
-
- There was a bug that caused large values in switch statements to compile
- incorrectly, this has now been fixed.
-
- 1.3.8 addq.w after function calls (from M.Combs)
-
- The compiler used to reset the stack pointer with an "addq.w" operation
- after every function call, this would not work correctly if the stack
- pointer was close to a block boundary.
-
- 1.3.9 definition of WORD in types.h
-
- The file "types.h" defined a WORD as an unsigned short, this is wrong, a
- WORD should be signed.
-
- 1.3.10 Examples
-
- For this release I have again changed the set of examples, I have
- included an initial port of the IFF reading programs that were placed in
- the public domain by Electronic Arts, I have extended the "fortune" example
- to use the speech device, and I have used the "disass" program as the
- basis for a more powerfull program for dumping out object files. All these
- changes do mean that some of the previous examples have been removed, get
- them from old releases of NorthC if you are really interested.
-
- 1.3.11 Interrupts
-
- I have made a first attempt to implement interrupts in NorthC, at the
- moment NorthC programs check for interupts whenever a character is written
- to a file or the screen. If an interupt is detected then a signal is raised
- and the function set up by signal() is called. I should be able to use the
- Amiga signals to interrupt asynchronusly, but I have yet to get it working
- fully. There is a new default flag "_WithIntrCheck" set this to 0 in
- "defaults.c" to disable interrupts, if you want to check interrupts, for
- example in an extended loop you should call _CheckIntr() for example
-
- for(i=0;i<1000000;++i)
- {/* Perform some long calculation */
- foo = frobnicate(i);
- /* Check to see if the user has hit <Control-C> */
- _CheckIntr();
- }
-
- will test for interrupt characters each time round the loop.
-
- Release 1.2
- ***********
-
- 1.2.1 A68K
-
- A new version of A68K is being used, this allows the use of two
- flags,"-g" and "-q". The "-q" flag prevents A68K from outputting as it
- assembles, unless it has an error message to report. The "-g" flag makes
- all undefined symbols into globals, this means that NorthC does not need
- to add lots of "XREF" calls. The "make" program has been altered to take
- advantage of the new "a68k".
-
- 1.2.2 "top"
-
- The "top" optimiser has been ported from Sozobon C on FISH 314, this
- will reduce the size of object code. Because it takes some time it should
- only be used when you don't mind waiting for compilations. The code has
- been slightly modified to work with NorthC. The optimiser does not seem
- to make as much difference as I would expect, I suspect that I have
- introduced a bug with my changes.
-
- 1.2.3 strtol()
-
- Another bug in strtol() has been fixed, when the number filled the
- string the wrong value was returned. Maybe this will fix strtol() for good.
-
- 1.2.4 UNIX library
-
- A library of UNIX style functions has been implemented, these are to
- make "a68k" work. These functions are for porting programs from UNIX and
- MSDOS, once the code is ported it would be best to convert it to "proper"
- ANSI functions. See the documentation file for details.
-
- 1.2.5 More examples
-
- I will release NorthC 1.2 as a two disk set, this will allow me to
- release more of the source code, and more examples. I will attempt to put
- all the essential code on one disk and examples on the other. From now on
- I will only release NorthC in compressed form. The file "CONTENTS" will
- shows which code is on each disk.
-
- 1.2.6 Static arrays in functions
-
- The bug with static arrays in functions has now been fixed.
-
- 1.2.7 Preprocessor directives
-
- The bug with #undef reported by Martin Combs has now been fixed, a new
- ANSI style preprocessor directive #elif has been implemented.
-
- 1.2.8 Clearing address registers
-
- The bug that caused incorrect assembly code to be generated when address
- registers were set to zero has been fixed.
-
- 1.2.9 New NorthC command line flags
-
- NorthC will now accept a "-C" flag, if this is set all BSS and DATA
- segments will be placed in chip memory.
-
- 1.2.10 Default console
-
- The default console is now "con:20/20/400/100/NorthC Program" to allow
- programs more chance to run if you boot up with old disks that do not
- support the "newcon:" device.
-
- 1.2.11 "crt0.asm"
-
- The "crt0.asm" file has been tidied up following suggestions from Martin
- Combs, thanks Martin.
-
- 1.2.12 Mini-hello, translate and fortune
-
- Three new example programs have been placed on the examples disk,
- "mini-hello" shows how to create small 'C' programs, "fortune" prints out
- inane phrases and "translate" translates ASCII files into a format that
- word processors like.
-
- 1.2.13 4 byte integers
-
- I have converted the 'C' library to use 4 byte integers, I have used the
- changes from Jeff Lydiat to convert the compiler to use 4 byte integers as
- well.
-
- 1.2.14 Workbench arguments
-
- I have changed the startup so that if a NorthC program is started from
- the workbench then it will have some arguments passed in the "argc" and
- "argv" arguments. If the icon is a tool type then "argc" will be 1 and
- "argv[0]" will be the name of the program, if the icon is of project type
- then "argc" will be 2 and "argv[1]" will be the name of the icon that
- called the tool.
-
- 1.2.15 New variables
-
- The variables "_WBmsg" and "_Task" are now available for 'C' to
- manipulate, "_WBmsg" contains a pointer to the workbench message if the
- program was started from the workbench, "_Task" contains a pointer to the
- program's task structure.
-
- 1.2.16 _stdoutUnbuffered
-
- A new integer variable has been defined, _stdoutUnbuffered, if the value
- of this variable is 0 then the "stdout" FILE will buffer its output.
-
- 1.2.17 "defaults.c"
-
- The variables that control the behaviour of the program have been
- collected into a single file "defaults.c" you can change the behaviour by
- editing this file and including the resulting object file in your program.
-
- 1.2.18 Other things
-
- Again most of the changes for this release have not been documented, if
- you are updating from an earlier version you should be careful. However the
- good news is that
-
- Draw(rport,20,60);
-
- will no longer trash your machine.
-
- Release 1.1
- ***********
-
- 1.1.1 Static variables
-
- The bug with static variables within functions has been fixed.
-
- 1.1.2 AmigaDOS stubs
-
- The stubs for most AmigaDOS libraries have been added, the only 1.3
- libraries that are not covered are "mathieeedoubbas.library" and
- "mathieeedoubtrans.library". The OpenLibrary() function has been extended
- to, detect the opening of standard libraries, note the library pointer for
- 'C' stubs, and cause the automatic closing of libraries when exit() is
- called or the program terminates.
-
- 1.1.3 Time functions
-
- Most of the functions in the ANSI 'C' time package have now been added
- to the library, the only remaining missing function is mktime().
-
- 1.1.4 Floating point
-
- Floating point numbers now work, the compiler will now recognise them,
- the subtraction and division functions take their arguments in the correct
- order, the printf() function can use floating point formats, and so on. I
- have not extended scanf() to cover floating point numbers yet, see "Bugs.doc".
-
- 1.1.5 New functions
-
- A number of functions have been added to the 'C' library, these
- include_div(), _ldiv(), abs(), atan2(), atexit(), bsearch(), fmod(),
- frexp(), labs(), ldexp(), memchr(), memcmp(), memmove(), memset(), modf(),
- perror(), qsort(), rand(), rename(), srand(), strerror(), strtod() and
- tmpnam()see the "libc.doc" file for details of the latest set of functions
- that are included in the library.
-
- 1.1.6 New Definitions
-
- A number of definitions have been added to the 'C' include files, these
- include atof(), atoi(), atol(), EDOM and ERANGE the "libc.doc" file gives
- details.
-
- 1.1.7 Locale and multibyte support
-
- Having decided not to support the locale and multibyte characters in
- ANSI 'C' I have explained ways to emulate the functions in the "libc.doc"
- file.
-
- 1.1.8 File handling
-
- The file handling functions have been tidied up, this includes the
- implementation of some previously missing functions, fgetpos(), freopen(),
- fread(), fseek(), fsetpos(), fwrite(), ftell() and rewind(). In addition
- the functions fopen() and fflush() have been extended to allow files to be
- opened with all the ANSI file modes. This has been made easier by the
- fact binary files and text files are the same.
-
- 1.1.9 strtol()
-
- The strtol() function was incorrectly defined to take a long value for
- the base. Once this was fixed the function would fail if a base of zero
- was used, this has been fixed as well.
-
- 1.1.10 Documentation
-
- The file "AmigaDOS.doc" has been added, this lists all the AmigaDOS
- functions that are supported by this version of the 'C' library. The file
- "CHANGES", this file, lists all the changes from previous versions of NorthC.
-
- 1.1.11 Make program
-
- A version of "make" has been created and added to the environment, some
- documentation for the program has been created. This is not a full
- implementation, for example it does not support macros, however it does
- most things that are required.
-
- 1.1.12 GNU-GO
-
- The program "gnu-go" has been removed from the disk, if you are
- interested in the game of "go" you can get the source from NorthC 1.0,
- check out your local public domain supplier. Fish 340 contains a copy, if
- you can get the "unpack" script file to work.
-
- 1.1.13 CRender
-
- An example program "CRender" has been created, this will provide a
- simple display of a three dimensional object rotating in space. The
- directory "NorthC:examples/CRender" gives some documentation.
-
- 1.1.14 Workbench directory
-
- When a program is called from the workbench the directory is now set
- correctly.
-
- 1.1.15 Other things
-
- Most of the changes for this release have not been documented, if you
- are updating from an earlier version (either 1.0 or 0.1) you should be
- careful. Beware of weirdness arising from the fact that all AmigaDOS
- routines take long arguments,
-
- Draw(rport,20,60);
-
- for example will almost certainly trash your machine.
-
- Release 1.0
- ***********
-
- This was the initial public release of NorthC, it includes a 'C'
- compiler and library. Some of the numerous bugs and omissions are
- documented in "Bugs.doc" and "libc.doc".
-