home *** CD-ROM | disk | FTP | other *** search
/ The C Users' Group Library 1994 August / wc-cdrom-cusersgrouplibrary-1994-08.iso / vol_200 / 208_01 / e68k.doc < prev    next >
Text File  |  1987-10-13  |  3KB  |  74 lines

  1. How I ported 'e' version 4.8 to other environment.
  2.             -- a brief history.
  3.     1) began to use 'e' in October 1985
  4.     2) tried to port it to 68K, but failed.
  5.         at least 12 whole days were spent in debugging.
  6.         the sole tool was DDT of Digital Research.
  7.     3) acquired 'qed' March 1986
  8.         re-wrote my half-cooked 'e' after 'qed'
  9.         at least 3 whole days were spent in debugging.
  10.     4) wrote to Mr Haefner, the author of 'qed', asking to send me
  11.         his VAX version of 'qed'.
  12.         'qev' arrived.
  13.     5) re-wrote 'qed' without referencing my half-done 'e'
  14.         it ran immediately.
  15.         a few bugs were found, but a whole day was enough to
  16.         fix them.
  17.         all the re-writing of 'e' were erased from earth.
  18.         that was in the first week of July 1986
  19.     6) re-wrote 'e' referencing my own 'qed'
  20.         the re-writing took an hour.
  21.         serious debugging for a few days.
  22.     7) ran 'lint'
  23.         a few bugs in 'qev' were found and fixed.
  24.         minor changes are made in order not to offend 'lint'
  25.         too much.
  26.     8) submitted to CUG some time after July 1986.
  27.     9) present version contains a couple of fixes.
  28.         10 June 1987
  29.  
  30. **** what things are non-portable in BDS C **
  31. The original 'e' was written in BDS C, which is a C language in its own
  32. right. However, it is different from the standard C compilers (the PCC).
  33. And DRI C is a descendant of the PCC. The problem is that it is precisely
  34. where C is most C-like that BDS C diverts from PCC. It is true that C
  35. is not good for programs exceeding 10000 lines,but even in the range of
  36. more than 2000 lines, BDS C programs are very hard to maintain because
  37. it lacks statics, initialisers, bit fields, typedefs, casts etc. and
  38. encourages the using of externals for sheer speed.
  39.  
  40.     The major difference between BDS C and PCC are summarized in BDS C's
  41. Manual Chapter Four "Notes to Appendix A of the C Book".
  42. A few things should be added:
  43.     1) identifiers must be significant in the first SEVEN letters,
  44.         and preferrably SIX (in Honeywell). Thus, putline and
  45.         putlineno cannot go together.
  46.     2) the external declaration in BDS C is almost FORTRAN. storage
  47.         must be declared once in one file. array could be otherwise.
  48.     3) =op  Some compilers support old fashioned operators
  49.         though they usually print a warning. Put a space between
  50.         them.
  51.         #define FOO -1
  52.         bar =FOO+1;    /* bar -= 1+1; not bar =0; */
  53.     4) CR,LF <--> LF exchanges and EOF mark for ASCII files are handled
  54.         implicitly in other CP/M C compilers so as to keep user
  55.         written code close to UNIX C.
  56.     5) in BDS C char type is the standard type, not 'int' ( in 'for',
  57.         'while', 'switch' ). In BDS C, 'int' is used either as
  58.          a pointer or as a number greater than 255.
  59.     6) as 'static' class is not supported in BDS C and external
  60.         variables are faster in 8080, programs written in that
  61.         language tend to be overloaded with externals, creating
  62.         unreadability. Externals should be employed sparingly.
  63.     7) most of the functions in BDS C differ from UNIX C.
  64.     8) whereas UNIX C's support or understand structure assignment and
  65.         therefore distinguishe 'foo' from '&foo' when 'foo' is a
  66.         structure, BDS C takes 'foo' for a pointer to the structure
  67.         'foo'(it reminds us of the usage of array !).
  68.     9) that && and || have the same precedence in BDS C sometimes
  69.         creates a crash.  That is serious.
  70.         BDS C:
  71.             if(A && B || C)
  72.         UNIX C:
  73.             if(A && (B||C))
  74.