| 
2
 | 
     1 File "changes"
 | 
| 
 | 
     2 ~~~~~~~~~~~~~~
 | 
| 
 | 
     3 
 | 
| 
 | 
     4 LOG of the changes introduced by Simao and summary of results.
 | 
| 
 | 
     5 
 | 
| 
 | 
     6 1. first of all, file names had to fit in DOS limitations. Some names had
 | 
| 
 | 
     7    to be truncated, and the mapping is as follows:
 | 
| 
 | 
     8 	gsm_create.c    -> gsm_crea.c
 | 
| 
 | 
     9 	gsm_decode.c    -> gsm_deco.c
 | 
| 
 | 
    10 	gsm_destroy.c   -> gsm_dest.c
 | 
| 
 | 
    11 	gsm_encode.c    -> gsm_enco.c
 | 
| 
 | 
    12 	gsm_explode.c   -> gsm_expl.c
 | 
| 
 | 
    13 	gsm_implode.c   -> gsm_impl.c
 | 
| 
 | 
    14 	gsm_option.c    -> gsm_opti.c
 | 
| 
 | 
    15 	gsm_print.c     -> gsm_prin.c
 | 
| 
 | 
    16 	long_term.c     -> long_ter.c
 | 
| 
 | 
    17 	preprocess.c    -> preproce.c
 | 
| 
 | 
    18 	short_term.c    -> short_te.c
 | 
| 
 | 
    19 
 | 
| 
 | 
    20 2. gsm.h had added prototypes for all the existing functions
 | 
| 
 | 
    21 
 | 
| 
 | 
    22 3. add.c had to be changed to make add_test.c work
 | 
| 
 | 
    23 
 | 
| 
 | 
    24 4. private.h had to be changed to use either true-function or the safe
 | 
| 
 | 
    25    pseudo-functions for the GSM_... macros. This was the main reason for
 | 
| 
 | 
    26    the errors that were happening.
 | 
| 
 | 
    27    
 | 
| 
 | 
    28 5. undefs were preceeded by a check of their definition to avoid some
 | 
| 
 | 
    29    complaints from VAX-C
 | 
| 
 | 
    30    
 | 
| 
 | 
    31 6. rpe.c had to be changed in a strange hacked "switch" by its "normal"
 | 
| 
 | 
    32    implementation for VMS (compilation error!) -  the code is as it was
 | 
| 
 | 
    33    in comments. 
 | 
| 
 | 
    34    
 | 
| 
 | 
    35 7. To keep compatibility, the change in patch 3 to rpe.c 
 | 
| 
 | 
    36    shall not be 
 | 
| 
 | 
    37    #define STEP( i, H )    (e[ k + i ] * (long)H)
 | 
| 
 | 
    38    but
 | 
| 
 | 
    39    #define STEP( i, H )    (e[ k + i ] * (longword)H)
 | 
| 
 | 
    40 
 | 
| 
 | 
    41 8. long_term.c (now long_ter.c) had to have added some castings, such 
 | 
| 
 | 
    42    as:
 | 
| 
 | 
    43       temp = gsm_norm( (longword)dmax << 16 );
 | 
| 
 | 
    44                        ^^^^^^^^^^
 | 
| 
 | 
    45    because gsm_norm uses longs and dmax is short: (short)<<16 = 0 always!
 | 
| 
 | 
    46    Also, if MSDOS/__MSDOS__ is defined, then USE_TABLE_MUL is 
 | 
| 
 | 
    47    #undef'd (see tests below).
 | 
| 
 | 
    48 
 | 
| 
 | 
    49 9. other small changes that I don't recall from my notes. These may include
 | 
| 
 | 
    50    type castings, and other changes done in the desperate search for the bugs.
 | 
| 
 | 
    51 
 | 
| 
 | 
    52    
 | 
| 
 | 
    53 Simplifications:
 | 
| 
 | 
    54 ~~~~~~~~~~~~~~~~
 | 
| 
 | 
    55 
 | 
| 
 | 
    56 Since I don't want a compress-like utility, I haven't put my hands in toast.
 | 
| 
 | 
    57 To ease my work, I've put all src, inc and add-test in one single directory
 | 
| 
 | 
    58 and simplified the makefile. I also added labels "all", "rpedemo" and "clean",
 | 
| 
 | 
    59 "anyway".
 | 
| 
 | 
    60 
 | 
| 
 | 
    61 
 | 
| 
 | 
    62 Extensions:
 | 
| 
 | 
    63 ~~~~~~~~~~~
 | 
| 
 | 
    64 
 | 
| 
 | 
    65 I added a DCL for compiling on VMS using either gcc or vax-c, depending on
 | 
| 
 | 
    66 the comments. I have also added a borland bcc make file for the pc, as well 
 | 
| 
 | 
    67 as a gcc makefile for the pc.
 | 
| 
 | 
    68 
 | 
| 
 | 
    69 Added a demo program and 2 driving routines (currently embedded in the demo 
 | 
| 
 | 
    70 program). With them, interfacing with the test sequence file is 
 | 
| 
 | 
    71 straight-forward.
 | 
| 
 | 
    72 
 | 
| 
 | 
    73 
 | 
| 
 | 
    74 Test results:
 | 
| 
 | 
    75 ~~~~~~~~~~~~~
 | 
| 
 | 
    76 
 | 
| 
 | 
    77 the bcc-compiled version processed correctly all the 5 test vectors for
 | 
| 
 | 
    78 the following conditions:
 | 
| 
 | 
    79 
 | 
| 
 | 
    80 (SASR always defined)
 | 
| 
 | 
    81 
 | 
| 
 | 
    82 USE_FLOAT_MUL undefined
 | 
| 
 | 
    83 USE_FLOAT_MUL defined and FAST undefined
 | 
| 
 | 
    84 USE_FLOAT_MUL and FAST defined
 | 
| 
 | 
    85 
 | 
| 
 | 
    86 bcc failed compilation when USE_FLOAT_MUL undefined and USE_TABLE_MUL defined 
 | 
| 
 | 
    87 because the table matrix is greater than 64kbytes! (No way out!)
 | 
| 
 | 
    88 
 | 
| 
 | 
    89 When compiled by bcc with both USE_FLOAT_MUL and FAST undefined, bcc
 | 
| 
 | 
    90 failed passing the test sequences. 
 | 
| 
 | 
    91 
 | 
| 
 | 
    92 Besides compilation worked for USE_FLOAT_MUL and FAST defined, in fact, all
 | 
| 
 | 
    93 the runs with the test sequences were made in the "compatible mode", i.e.,
 | 
| 
 | 
    94 with the state variable structure fuield "fast" always set as 0. Therefore,
 | 
| 
 | 
    95 it was not tested. Although, it is known from the original authors that
 | 
| 
 | 
    96 the fast mode does not work in Unix (32bit), hence it is very likely not
 | 
| 
 | 
    97 to work with DOS either!
 | 
| 
 | 
    98 
 | 
| 
 | 
    99 NeedFunctionPrototypes was always defined for bcc, gcc, acc, and vax-c, 
 | 
| 
 | 
   100 and undefined for unix cc.
 | 
| 
 | 
   101 
 | 
| 
 | 
   102 Since gcc is the same implementation ported across platforms, it should 
 | 
| 
 | 
   103 work as for SunOS, but it was not tested.
 | 
| 
 | 
   104 
 | 
| 
 | 
   105 The program worked properly for the following environments (see summary below):
 | 
| 
 | 
   106 SunOS 4.3:	cc, acc, gcc	
 | 
| 
 | 
   107 MS/DOS: 	bcc, gcc (djcpp)
 | 
| 
 | 
   108 VAX/VMS: 	cc (Vax-c), gcc
 | 
| 
 | 
   109 
 | 
| 
 | 
   110 Summary of the tests:
 | 
| 
 | 
   111 -------------------------------------------------------------------------
 | 
| 
 | 
   112 Environment	Compiler    Symbols defined (Note: SASR always def'd)
 | 
| 
 | 
   113 			USE_FLOAT_MUL	FAST	USE_TABLE_MUL  Worked?
 | 
| 
 | 
   114 -------------------------------------------------------------------------
 | 
| 
 | 
   115 SunOS 4.3:	cc	yes		no	-		yes
 | 
| 
 | 
   116 			yes		yes	-		yes*
 | 
| 
 | 
   117 			no		-	no		yes
 | 
| 
 | 
   118 			no		-	yes		yes
 | 
| 
 | 
   119 		acc	same as for cc in SunOS 4.3		yes
 | 
| 
 | 
   120 		gcc	same as for cc in SunOS 4.3		yes
 | 
| 
 | 
   121 MS/DOS: 	bcc	yes		no	-		yes
 | 
| 
 | 
   122 			yes		yes	-		yes
 | 
| 
 | 
   123 			no		-	no		no
 | 
| 
 | 
   124 			no		-	yes		no
 | 
| 
 | 
   125 		gcc	Not tested other than yes/no/-		yes
 | 
| 
 | 
   126 VAX/VMS: 	Vax-c	same as for cc in SunOS 4.3		yes
 | 
| 
 | 
   127 		gcc	Not tested other than yes/no/-		yes
 | 
| 
 | 
   128 -------------------------------------------------------------------------
 | 
| 
 | 
   129 * Note: all the runs were made in the compatible mode, therefore the
 | 
| 
 | 
   130         fast computation of the data was not performed!
 | 
| 
 | 
   131 -------------------------------------------------------------------------
 | 
| 
 | 
   132 
 | 
| 
 | 
   133 Therefore, the safest approach is to compile always with USE_FLOAT_MUL
 | 
| 
 | 
   134 defined and with and FAST defined if appropriate for speed! 
 | 
| 
 | 
   135 
 | 
| 
 | 
   136 In Vax-C there were warnings relating to function names longer than 31 
 | 
| 
 | 
   137 characters. No way to circumvent this, but it is not a problem because the
 | 
| 
 | 
   138 31 first letters generate unique names anyway. Because of this, link will 
 | 
| 
 | 
   139 also complain!
 | 
| 
 | 
   140 
 | 
| 
 | 
   141 The test sequence files had the byte order swaped in the Sun workstation
 | 
| 
 | 
   142 because of the Big Endian data orientation.
 | 
| 
 | 
   143 
 | 
| 
 | 
   144 -- <simao@cpqd.ansp.br> -- 8/Apr/94
 | 
| 
 | 
   145 
 |