~ubuntu-branches/debian/experimental/cuneiform/experimental

« back to all changes in this revision

Viewing changes to cuneiform_src/Kern/ctb/src/ctb_cnvm.c

  • Committer: Bazaar Package Importer
  • Author(s): Daniel Baumann
  • Date: 2009-07-10 17:58:10 UTC
  • Revision ID: james.westby@ubuntu.com-20090710175810-rqc89d2i3tki9m89
Tags: upstream-0.7.0+dfsg
ImportĀ upstreamĀ versionĀ 0.7.0+dfsg

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/*
 
2
Copyright (c) 1993-2008, Cognitive Technologies
 
3
All rights reserved.
 
4
 
 
5
ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ ļæ½ ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½,
 
6
ļæ½ļæ½ļæ½ ļæ½ ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½, ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½, ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½:
 
7
 
 
8
      * ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½
 
9
        ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½, ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½
 
10
        ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½.
 
11
      * ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½/ļæ½ļæ½ļæ½ ļæ½
 
12
        ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½, ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½, ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½
 
13
        ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½, ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½
 
14
        ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½.
 
15
      * ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ Cognitive Technologies, ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½
 
16
        ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½/ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½
 
17
        ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½, ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½, ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½
 
18
        ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½.
 
19
 
 
20
ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ ļæ½/ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ "ļæ½ļæ½ļæ½
 
21
ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½" ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½-ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½, ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½,
 
22
ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½, ļæ½ļæ½ ļæ½ļæ½
 
23
ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½. ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ ļæ½ ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½, ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½
 
24
ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½/ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½, ļæ½ļæ½ ļæ½ ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½
 
25
ļæ½ļæ½ŃØļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½, ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½, ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½, ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½
 
26
ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½, ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½
 
27
ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ (ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½, ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½,
 
28
ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½, ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½/ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½, ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½-ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½
 
29
ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ ļæ½/ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½,
 
30
ļæ½ļæ½ ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½), ļæ½ļæ½ ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½, ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½
 
31
ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½ ļæ½ ļæ½ļæ½ļæ½ļæ½ļæ½ļæ½.
 
32
 
 
33
Redistribution and use in source and binary forms, with or without modification,
 
34
are permitted provided that the following conditions are met:
 
35
 
 
36
    * Redistributions of source code must retain the above copyright notice,
 
37
      this list of conditions and the following disclaimer.
 
38
    * Redistributions in binary form must reproduce the above copyright notice,
 
39
      this list of conditions and the following disclaimer in the documentation
 
40
      and/or other materials provided with the distribution.
 
41
    * Neither the name of the Cognitive Technologies nor the names of its
 
42
      contributors may be used to endorse or promote products derived from this
 
43
      software without specific prior written permission.
 
44
 
 
45
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
 
46
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
 
47
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
 
48
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
 
49
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 
50
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
 
51
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
 
52
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
 
53
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
 
54
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
55
*/
 
56
 
 
57
//************************************************************************//
 
58
//* CTB_CNVM.C :       convert memory functions **************************//
 
59
//************************************************************************//
 
60
 
 
61
#include "ctb.h"
 
62
 
 
63
static void conv_bits_to_bytes8(Word8 *bits,   Word8 *bytes, Int16 l);
 
64
static void conv_bytes_to_bits8(Word8 *bytes,  Word8 *bits, Int16 l);
 
65
static void conv_bits_to_bytes4(Word8 *bits,   Word8 *bytes, Int16 l);
 
66
static void conv_bytes_to_bits4(Word8 *bytes,  Word8 *bits, Int16 l);
 
67
static void conv_bits_to_bytes2(Word8 *bits,   Word8 *bytes, Int16 l);
 
68
static void conv_bits_to_bytes1(Word8 *bits,   Word8 *bytes, Int16 l);
 
69
static void conv_bytes_to_bits2(Word8 *bytes,  Word8 *bits, Int16 l);
 
70
static void conv_bytes_to_bits1(Word8 *bytes,  Word8 *bits, Int16 l);
 
71
static void conv_bits_to_bytes4plane(Word8 *bits,  Word8 *bytes, Int16 l);
 
72
static void conv_bytes_to_bits4plane(Word8 *bytes, Word8 *bits, Int16 l);
 
73
static void conv_bits_to_bytes2plane(Word8 *bits,  Word8 *bytes, Int16 l);
 
74
static void conv_bits_to_bytes1plane(Word8 *bits,  Word8 *bytes, Int16 l);
 
75
static void conv_bytes_to_bits2plane(Word8 *bytes, Word8 *bits, Int16 l);
 
76
static void conv_bytes_to_bits1plane(Word8 *bytes, Word8 *bits, Int16 l);
 
77
 
 
78
static void conv_bits2_to_bits2plane_one(Word8 *bout,Word8 *text,
 
79
                       Word8 msk1,Word8 msk2,Word8 msk3,Word8 msk4,Int16 len);
 
80
static void conv_bits4_to_bits4plane_one(Word8 *bout,Word8 *text,
 
81
                                   Word8 mask1,Word8 mask2, Int16 len);
 
82
static Bool32 conv_bits_to_bytes( Int16 colors,Word8 *bin,Word8 *text, Int16 len);
 
83
static Bool32 conv_bytes_to_bits( Int16 colors, Word8 *text,Word8 *bin, Int16 len);
 
84
static void   conv_bits4_to_bits4plane(Word8 *text,Word8 *bin,Int16 len,Int16 halftone8);
 
85
static void   conv_bits2_to_bits2plane(Word8 *text,Word8 *bin,Int16 len);
 
86
 
 
87
// can be EXPORT
 
88
Bool32  conv_bits_to_bytes( Int16 colors,Word8 *bin,Word8 *text, Int16 len)
 
89
{
 
90
switch( colors )
 
91
        {
 
92
        case 2   : conv_bits_to_bytes8(bin,text,len);      return 1;
 
93
        case 4   : conv_bits_to_bytes4(bin,text,len);      return 1;
 
94
        case 16  : conv_bits_to_bytes2(bin,text,len);      return 1;
 
95
    case 256 : conv_bits_to_bytes1(bin,text,len);      return 1;
 
96
        case -4  : conv_bits_to_bytes4plane(bin,text,len); return 1;
 
97
        case -16 : conv_bits_to_bytes2plane(bin,text,len); return 1;
 
98
    case -256: conv_bits_to_bytes1plane(bin,text,len); return 1;
 
99
        }
 
100
 
 
101
return 0;
 
102
}
 
103
// can be EXPORT
 
104
Bool32  conv_bytes_to_bits( Int16 colors, Word8 *text,Word8 *bin, Int16 len)
 
105
{
 
106
switch( colors )
 
107
        {
 
108
        case 2   : conv_bytes_to_bits8(text,bin,len);      return 1;
 
109
        case 4   : conv_bytes_to_bits4(text,bin,len);      return 1;
 
110
        case 16  : conv_bytes_to_bits2(text,bin,len);      return 1;
 
111
    case 256 : conv_bytes_to_bits1(text,bin,len);      return 1;
 
112
        case -4  : conv_bytes_to_bits4plane(text,bin,len); return 1;
 
113
        case -16 : conv_bytes_to_bits2plane(text,bin,len); return 1;
 
114
    case -256: conv_bytes_to_bits1plane(text,bin,len); return 1;
 
115
        }
 
116
 
 
117
return 0;
 
118
}
 
119
 
 
120
// 256 colors //
 
121
void conv_bits_to_bytes1(Word8 *bin,Word8 *text, Int16 len)
 
122
{
 
123
memcpy( text,bin, (Word16)len);
 
124
return;
 
125
}
 
126
void conv_bytes_to_bits1(Word8 *text,Word8 *bin, Int16 len)
 
127
{
 
128
memcpy( text,bin, (Word16)len);
 
129
return;
 
130
}
 
131
 
 
132
// 16 colors - EGA //
 
133
void conv_bits_to_bytes2(Word8 *bin,Word8 *text, Int16 len)
 
134
{
 
135
Int16 i;
 
136
Word8 c,*p;
 
137
memset( text,0x0, (Word16)len<<1);
 
138
for(p=text,i=0;i<len;i++)
 
139
        {
 
140
        c = bin[i];
 
141
        if( c&0xF0 ) *p= (c&0xF0)>>4; p++;
 
142
        if( c&0x0F ) *p= (c&0x0F);    p++;
 
143
        }
 
144
 
 
145
return;
 
146
}
 
147
 
 
148
void conv_bytes_to_bits2(Word8 *text,Word8 *bin, Int16 len)
 
149
{
 
150
Word8 *p=bin,c;
 
151
Int16 i;
 
152
 
 
153
for(i=0;i<len;i++,text+=2)
 
154
        {
 
155
        c  = text[0];
 
156
        c <<=4; c|= text[1];
 
157
        *p++=c;
 
158
        }
 
159
 
 
160
return;
 
161
}
 
162
 
 
163
// -256 colors - planar VGA //
 
164
#define SHIFT_SAVE1_1(mask )    if( c&mask )    *p  = 0x01;  p++;
 
165
#define SHIFT_SAVE1_2(mask )    if( c&mask )    *p |= 0x02;  p++;
 
166
#define SHIFT_SAVE1_3(mask )    if( c&mask )    *p |= 0x04;  p++;
 
167
#define SHIFT_SAVE1_4(mask )    if( c&mask )    *p |= 0x08;  p++;
 
168
#define SHIFT_SAVE1_5(mask )    if( c&mask )    *p |= 0x10;  p++;
 
169
#define SHIFT_SAVE1_6(mask )    if( c&mask )    *p |= 0x20;  p++;
 
170
#define SHIFT_SAVE1_7(mask )    if( c&mask )    *p |= 0x40;  p++;
 
171
#define SHIFT_SAVE1_8(mask )    if( c&mask )    *p |= 0x80;  p++;
 
172
void conv_bits_to_bytes1plane(Word8 *bin,Word8 *text,Int16 len)
 
173
{
 
174
Int16 i,len8=len/8,len0;
 
175
Word8 c,*p;
 
176
 
 
177
memset( text,0x0, (Word16)len);
 
178
len0 = len8;
 
179
for(p=text,i=0;i<len0;i++)
 
180
        {
 
181
    c = bin[i];
 
182
        SHIFT_SAVE1_1(0x80);
 
183
        SHIFT_SAVE1_1(0x40);
 
184
        SHIFT_SAVE1_1(0x20);
 
185
        SHIFT_SAVE1_1(0x10);
 
186
        SHIFT_SAVE1_1(0x08);
 
187
        SHIFT_SAVE1_1(0x04);
 
188
        SHIFT_SAVE1_1(0x02);
 
189
        SHIFT_SAVE1_1(0x01);
 
190
        }
 
191
len0 += len8;
 
192
for(p=text;i<len0;i++)
 
193
        {
 
194
        c = bin[i];
 
195
        SHIFT_SAVE1_2(0x80);
 
196
        SHIFT_SAVE1_2(0x40);
 
197
        SHIFT_SAVE1_2(0x20);
 
198
        SHIFT_SAVE1_2(0x10);
 
199
        SHIFT_SAVE1_2(0x08);
 
200
        SHIFT_SAVE1_2(0x04);
 
201
        SHIFT_SAVE1_2(0x02);
 
202
        SHIFT_SAVE1_2(0x01);
 
203
        }
 
204
len0 += len8;
 
205
for(p=text;i<len0;i++)
 
206
        {
 
207
        c = bin[i];
 
208
        SHIFT_SAVE1_3(0x80);
 
209
        SHIFT_SAVE1_3(0x40);
 
210
        SHIFT_SAVE1_3(0x20);
 
211
        SHIFT_SAVE1_3(0x10);
 
212
        SHIFT_SAVE1_3(0x08);
 
213
        SHIFT_SAVE1_3(0x04);
 
214
        SHIFT_SAVE1_3(0x02);
 
215
        SHIFT_SAVE1_3(0x01);
 
216
        }
 
217
len0 += len8;
 
218
for(p=text;i<len0;i++)
 
219
        {
 
220
        c = bin[i];
 
221
        SHIFT_SAVE1_4(0x80);
 
222
        SHIFT_SAVE1_4(0x40);
 
223
        SHIFT_SAVE1_4(0x20);
 
224
        SHIFT_SAVE1_4(0x10);
 
225
        SHIFT_SAVE1_4(0x08);
 
226
        SHIFT_SAVE1_4(0x04);
 
227
        SHIFT_SAVE1_4(0x02);
 
228
        SHIFT_SAVE1_4(0x01);
 
229
        }
 
230
len0 += len8;
 
231
for(p=text;i<len0;i++)
 
232
        {
 
233
    c = bin[i];
 
234
        SHIFT_SAVE1_5(0x80);
 
235
        SHIFT_SAVE1_5(0x40);
 
236
        SHIFT_SAVE1_5(0x20);
 
237
        SHIFT_SAVE1_5(0x10);
 
238
        SHIFT_SAVE1_5(0x08);
 
239
        SHIFT_SAVE1_5(0x04);
 
240
        SHIFT_SAVE1_5(0x02);
 
241
        SHIFT_SAVE1_5(0x01);
 
242
        }
 
243
len0 += len8;
 
244
for(p=text;i<len0;i++)
 
245
        {
 
246
        c = bin[i];
 
247
        SHIFT_SAVE1_6(0x80);
 
248
        SHIFT_SAVE1_6(0x40);
 
249
        SHIFT_SAVE1_6(0x20);
 
250
        SHIFT_SAVE1_6(0x10);
 
251
        SHIFT_SAVE1_6(0x08);
 
252
        SHIFT_SAVE1_6(0x04);
 
253
        SHIFT_SAVE1_6(0x02);
 
254
        SHIFT_SAVE1_6(0x01);
 
255
        }
 
256
len0 += len8;
 
257
for(p=text;i<len0;i++)
 
258
        {
 
259
        c = bin[i];
 
260
        SHIFT_SAVE1_7(0x80);
 
261
        SHIFT_SAVE1_7(0x40);
 
262
        SHIFT_SAVE1_7(0x20);
 
263
        SHIFT_SAVE1_7(0x10);
 
264
        SHIFT_SAVE1_7(0x08);
 
265
        SHIFT_SAVE1_7(0x04);
 
266
        SHIFT_SAVE1_7(0x02);
 
267
        SHIFT_SAVE1_7(0x01);
 
268
        }
 
269
len0 += len8;
 
270
for(p=text;i<len0;i++)
 
271
        {
 
272
        c = bin[i];
 
273
        SHIFT_SAVE1_8(0x80);
 
274
        SHIFT_SAVE1_8(0x40);
 
275
        SHIFT_SAVE1_8(0x20);
 
276
        SHIFT_SAVE1_8(0x10);
 
277
        SHIFT_SAVE1_8(0x08);
 
278
        SHIFT_SAVE1_8(0x04);
 
279
        SHIFT_SAVE1_8(0x02);
 
280
        SHIFT_SAVE1_8(0x01);
 
281
        }
 
282
 
 
283
return;
 
284
}
 
285
 
 
286
#define SAVE_TEXT1(ind) c1<<=1; c2<<=1; c3<<=1; c4<<=1; c5<<=1; c6<<=1; c7<<=1; c8<<=1; \
 
287
        if( text[ind]&0x01 ) c1 |= 1;    \
 
288
        if( text[ind]&0x02 ) c2 |= 1;    \
 
289
        if( text[ind]&0x04 ) c3 |= 1;    \
 
290
        if( text[ind]&0x08 ) c4 |= 1;    \
 
291
        if( text[ind]&0x10 ) c5 |= 1;    \
 
292
        if( text[ind]&0x20 ) c6 |= 1;    \
 
293
        if( text[ind]&0x40 ) c7 |= 1;    \
 
294
        if( text[ind]&0x80 ) c8 |= 1;
 
295
 
 
296
void conv_bytes_to_bits1plane(Word8 *text,Word8 *bin,Int16 len)
 
297
{
 
298
Int16   len8 = len/8;
 
299
Word8 *p1=bin+0*len8, *p2=bin+1*len8, *p3=bin+2*len8,  *p4=bin+3*len8;
 
300
Word8 *p5=bin+4*len8, *p6=bin+5*len8, *p7=bin+6*len8,  *p8=bin+7*len8;
 
301
Word8  c1, c2, c3, c4, c5, c6, c7, c8;
 
302
int i;
 
303
 
 
304
 
 
305
for(i=0;i<len8;i++,text+=8)
 
306
        {
 
307
    if( i==250 )
 
308
        i+=0;
 
309
        c1 = ( (text[0]&0x01)!=0 );
 
310
        c2 = ( (text[0]&0x02)!=0 );
 
311
        c3 = ( (text[0]&0x04)!=0 );
 
312
        c4 = ( (text[0]&0x08)!=0 );
 
313
    c5 = ( (text[0]&0x10)!=0 );
 
314
        c6 = ( (text[0]&0x20)!=0 );
 
315
        c7 = ( (text[0]&0x40)!=0 );
 
316
        c8 = ( (text[0]&0x80)!=0 );
 
317
        SAVE_TEXT1(1);
 
318
        SAVE_TEXT1(2);
 
319
        SAVE_TEXT1(3);
 
320
        SAVE_TEXT1(4);
 
321
        SAVE_TEXT1(5);
 
322
        SAVE_TEXT1(6);
 
323
        SAVE_TEXT1(7);
 
324
        *p1++=c1;
 
325
        *p2++=c2;
 
326
        *p3++=c3;
 
327
        *p4++=c4;
 
328
        *p5++=c5;
 
329
        *p6++=c6;
 
330
        *p7++=c7;
 
331
        *p8++=c8;
 
332
    }
 
333
 
 
334
return;
 
335
}
 
336
 
 
337
// -16 colors - planar EGA //
 
338
#define SHIFT_SAVE2_1(mask )    if( c&mask )    *p  = 0x1;  p++;
 
339
#define SHIFT_SAVE2_2(mask )    if( c&mask )    *p |= 0x2;  p++;
 
340
#define SHIFT_SAVE2_3(mask )    if( c&mask )    *p |= 0x4;  p++;
 
341
#define SHIFT_SAVE2_4(mask )    if( c&mask )    *p |= 0x8;  p++;
 
342
void conv_bits_to_bytes2plane(Word8 *bin,Word8 *text,Int16 len)
 
343
{
 
344
Int16 i,len4=len>>2,len2=len>>1,len3=len2+len4;
 
345
Word8 c,*p;
 
346
 
 
347
memset( text,0x0, (Word16)len<<1);
 
348
for(p=text,i=0;i<len4;i++)
 
349
        {
 
350
    c = bin[i];
 
351
        SHIFT_SAVE2_1(0x80);
 
352
        SHIFT_SAVE2_1(0x40);
 
353
        SHIFT_SAVE2_1(0x20);
 
354
        SHIFT_SAVE2_1(0x10);
 
355
        SHIFT_SAVE2_1(0x08);
 
356
        SHIFT_SAVE2_1(0x04);
 
357
        SHIFT_SAVE2_1(0x02);
 
358
        SHIFT_SAVE2_1(0x01);
 
359
        }
 
360
for(p=text;i<len2;i++)
 
361
        {
 
362
        c = bin[i];
 
363
        SHIFT_SAVE2_2(0x80);
 
364
        SHIFT_SAVE2_2(0x40);
 
365
        SHIFT_SAVE2_2(0x20);
 
366
        SHIFT_SAVE2_2(0x10);
 
367
        SHIFT_SAVE2_2(0x08);
 
368
        SHIFT_SAVE2_2(0x04);
 
369
        SHIFT_SAVE2_2(0x02);
 
370
        SHIFT_SAVE2_2(0x01);
 
371
        }
 
372
for(p=text;i<len3;i++)
 
373
        {
 
374
        c = bin[i];
 
375
        SHIFT_SAVE2_3(0x80);
 
376
        SHIFT_SAVE2_3(0x40);
 
377
        SHIFT_SAVE2_3(0x20);
 
378
        SHIFT_SAVE2_3(0x10);
 
379
        SHIFT_SAVE2_3(0x08);
 
380
        SHIFT_SAVE2_3(0x04);
 
381
        SHIFT_SAVE2_3(0x02);
 
382
        SHIFT_SAVE2_3(0x01);
 
383
        }
 
384
for(p=text;i<len;i++)
 
385
        {
 
386
        c = bin[i];
 
387
        SHIFT_SAVE2_4(0x80);
 
388
        SHIFT_SAVE2_4(0x40);
 
389
        SHIFT_SAVE2_4(0x20);
 
390
        SHIFT_SAVE2_4(0x10);
 
391
        SHIFT_SAVE2_4(0x08);
 
392
        SHIFT_SAVE2_4(0x04);
 
393
        SHIFT_SAVE2_4(0x02);
 
394
        SHIFT_SAVE2_4(0x01);
 
395
        }
 
396
 
 
397
return;
 
398
}
 
399
 
 
400
#define SAVE_TEXT2(ind) c1<<=1; c2<<=1; c3<<=1; c4<<=1; \
 
401
                                                                                                if( text[ind]&0x1 ) c1 |= 1;    \
 
402
                                                                                                if( text[ind]&0x2 ) c2 |= 1;    \
 
403
                                                                                                if( text[ind]&0x4 ) c3 |= 1;    \
 
404
                                                                                                if( text[ind]&0x8 ) c4 |= 1;
 
405
void conv_bytes_to_bits2plane(Word8 *text,Word8 *bin,Int16 len)
 
406
{
 
407
Word8 *p1=bin, *p2=bin+(len>>2), *p3=bin+(len>>1),  *p4=bin+len-(len>>2);
 
408
Word8  c1, c2, c3, c4, i;
 
409
 
 
410
len >>= 2;
 
411
for(i=0;i<len;i++,text+=8)
 
412
        {
 
413
        c1 = ( (text[0]&0x1)!=0 );
 
414
        c2 = ( (text[0]&0x2)!=0 );
 
415
        c3 = ( (text[0]&0x4)!=0 );
 
416
        c4 = ( (text[0]&0x8)!=0 );
 
417
        SAVE_TEXT2(1);
 
418
        SAVE_TEXT2(2);
 
419
        SAVE_TEXT2(3);
 
420
        SAVE_TEXT2(4);
 
421
        SAVE_TEXT2(5);
 
422
        SAVE_TEXT2(6);
 
423
        SAVE_TEXT2(7);
 
424
        *p1++=c1;
 
425
        *p2++=c2;
 
426
        *p3++=c3;
 
427
        *p4++=c4;
 
428
        }
 
429
 
 
430
return;
 
431
}
 
432
 
 
433
// 4 colors - CGA //
 
434
void conv_bits_to_bytes4(Word8 *bin,Word8 *text,Int16 len)
 
435
{
 
436
Word16 i;
 
437
Word8 c,*p;
 
438
memset( text,0x0, (Word16)len<<2);
 
439
for(p=text,i=0;i<len;i++)
 
440
        {
 
441
        c = bin[i];
 
442
        if( c&0xC0 ) *p= (c&0xC0)>>6; p++;
 
443
        if( c&0x30 ) *p= (c&0x30)>>4; p++;
 
444
        if( c&0x0C ) *p= (c&0x0C)>>2; p++;
 
445
        if( c&0x03 ) *p= (c&0x03);    p++;
 
446
        }
 
447
 
 
448
return;
 
449
}
 
450
 
 
451
void conv_bytes_to_bits4(Word8 *text,Word8 *bin,Int16 len)
 
452
{
 
453
Word8 *p=bin,c;
 
454
Int16 i;
 
455
 
 
456
for(i=0;i<len;i++,text+=4)
 
457
        {
 
458
        c = text[0];
 
459
        c <<= 2; c |= text[1];
 
460
        c <<= 2; c |= text[2];
 
461
        c <<= 2; c |= text[3];
 
462
        *p++=c;
 
463
        }
 
464
 
 
465
return;
 
466
}
 
467
 
 
468
// -4 colors - planar CGA //
 
469
#define SHIFT_SAVE4_1(mask )    if( c&mask )    *p=0x1;  p++;
 
470
#define SHIFT_SAVE4_2(mask )    if( c&mask )    *p|=0x2; p++;
 
471
void conv_bits_to_bytes4plane(Word8 *bin,Word8 *text,Int16 len)
 
472
{
 
473
Int16 i,len2=len>>1;
 
474
Word8 c,*p;
 
475
 
 
476
memset( text,0x0, (Word16)len<<2);
 
477
for(p=text,i=0;i<len2;i++)
 
478
        {
 
479
  c = bin[i];
 
480
        SHIFT_SAVE4_1(0x80);
 
481
        SHIFT_SAVE4_1(0x40);
 
482
        SHIFT_SAVE4_1(0x20);
 
483
        SHIFT_SAVE4_1(0x10);
 
484
        SHIFT_SAVE4_1(0x08);
 
485
        SHIFT_SAVE4_1(0x04);
 
486
        SHIFT_SAVE4_1(0x02);
 
487
        SHIFT_SAVE4_1(0x01);
 
488
        }
 
489
for(p=text;i<len;i++)
 
490
        {
 
491
        c = bin[i];
 
492
        SHIFT_SAVE4_2(0x80);
 
493
        SHIFT_SAVE4_2(0x40);
 
494
        SHIFT_SAVE4_2(0x20);
 
495
        SHIFT_SAVE4_2(0x10);
 
496
        SHIFT_SAVE4_2(0x08);
 
497
        SHIFT_SAVE4_2(0x04);
 
498
        SHIFT_SAVE4_2(0x02);
 
499
        SHIFT_SAVE4_2(0x01);
 
500
        }
 
501
 
 
502
return;
 
503
}
 
504
 
 
505
#define SAVE_TEXT4(ind) c1<<=1; c2<<=1;              \
 
506
                                                                                                if( text[ind]&0x1 ) c1 |= 1; \
 
507
                                                                                                if( text[ind]&0x2 ) c2 |= 1;
 
508
void conv_bytes_to_bits4plane(Word8 *text,Word8 *bin, Int16 len)
 
509
{
 
510
Word8 *p1=bin, *p2=bin+(len>>1);
 
511
Word8  c1, c2, i;
 
512
 
 
513
len>>=1;
 
514
for(i=0;i<len;i++,text+=8)
 
515
        {
 
516
        c1 = ( (text[0]&0x1)!=0 );
 
517
        c2 = ( (text[0]&0x2)!=0 );
 
518
        SAVE_TEXT4(1);
 
519
        SAVE_TEXT4(2);
 
520
        SAVE_TEXT4(3);
 
521
        SAVE_TEXT4(4);
 
522
        SAVE_TEXT4(5);
 
523
        SAVE_TEXT4(6);
 
524
        SAVE_TEXT4(7);
 
525
        *p1++=c1;
 
526
        *p2++=c2;
 
527
        }
 
528
 
 
529
return;
 
530
}
 
531
 
 
532
// 2 colors - Monochrom //
 
533
#define SHIFT_SAVE8(mask )      if( c&mask )    *p=0x1; p++;
 
534
void conv_bits_to_bytes8(Word8 *bin,Word8 *text, Int16 len)
 
535
{
 
536
Int16 i;
 
537
Word8 c,*p;
 
538
memset( text,0x0, len*8);
 
539
for(p=text,i=0;i<len;i++)
 
540
        {
 
541
        c = bin[i];
 
542
        SHIFT_SAVE8(0x80);
 
543
        SHIFT_SAVE8(0x40);
 
544
        SHIFT_SAVE8(0x20);
 
545
        SHIFT_SAVE8(0x10);
 
546
        SHIFT_SAVE8(0x08);
 
547
        SHIFT_SAVE8(0x04);
 
548
        SHIFT_SAVE8(0x02);
 
549
        SHIFT_SAVE8(0x01);
 
550
        }
 
551
 
 
552
return;
 
553
}
 
554
 
 
555
#define SAVE_TEXT8(ind) c<<=1; if( text[ind]==0x1 )             c |= 1;
 
556
void conv_bytes_to_bits8(Word8 *text,Word8 *bin, Int16 len)
 
557
{
 
558
Word8 *p=bin,c;
 
559
Int16 i;
 
560
 
 
561
for(i=0;i<len;i++,text+=8)
 
562
        {
 
563
        c = ( text[0]==0x1 );
 
564
        SAVE_TEXT8(1);
 
565
        SAVE_TEXT8(2);
 
566
        SAVE_TEXT8(3);
 
567
        SAVE_TEXT8(4);
 
568
        SAVE_TEXT8(5);
 
569
        SAVE_TEXT8(6);
 
570
        SAVE_TEXT8(7);
 
571
        *p++=c;
 
572
        }
 
573
 
 
574
return;
 
575
}
 
576
// can be EXPORT
 
577
void conv_bits4_to_bits4plane(Word8 *txt,Word8 *bin,Int16 len, Int16 halftone8)
 
578
{
 
579
 
 
580
{
 
581
Word8 *p1=bin, *p2=bin+(len>>2), *p3=bin+(len>>1),  *p4=bin+len-(len>>2);
 
582
 
 
583
len >>= 2;
 
584
if( !halftone8 )
 
585
  conv_bits4_to_bits4plane_one(p1,txt,0x10,0x01,len);
 
586
conv_bits4_to_bits4plane_one(p2,txt,0x20,0x02,len);
 
587
conv_bits4_to_bits4plane_one(p3,txt,0x40,0x04,len);
 
588
conv_bits4_to_bits4plane_one(p4,txt,0x80,0x08,len);
 
589
}
 
590
 
 
591
return;
 
592
}
 
593
 
 
594
 
 
595
// can be EXPORT
 
596
void conv_bits2_to_bits2plane(Word8 *text,Word8 *bin,Int16 len)
 
597
{
 
598
Word8 *p1=bin, *p2=bin+(len>>1);
 
599
 
 
600
len >>= 1;
 
601
conv_bits2_to_bits2plane_one(p1,text,0x40,0x10,0x04,0x01,len);
 
602
conv_bits2_to_bits2plane_one(p2,text,0x80,0x20,0x08,0x02,len);
 
603
 
 
604
return;
 
605
}
 
606
 
 
607
void conv_bits4_to_bits4plane_one(Word8 *bout,Word8 *text,
 
608
                                   Word8 mask1,Word8 mask2, Int16 len)
 
609
{
 
610
Int16  i;
 
611
Word8 c;
 
612
for(i=0;i<len;i++,text+=4)
 
613
        {
 
614
        c = ( (text[0]&mask1)!=0 );
 
615
        c  <<= 1;
 
616
        if( text[0]&mask2 )     c |= 1;
 
617
        c  <<= 1;
 
618
        if( text[1]&mask1 )     c |= 1;
 
619
  c  <<= 1;
 
620
        if( text[1]&mask2 )     c |= 1;
 
621
  c  <<= 1;
 
622
        if( text[2]&mask1 )     c |= 1;
 
623
  c  <<= 1;
 
624
        if( text[2]&mask2 )     c |= 1;
 
625
  c  <<= 1;
 
626
        if( text[3]&mask1 )     c |= 1;
 
627
  c  <<= 1;
 
628
        if( text[3]&mask2 )     c |= 1;
 
629
        *bout++ = c;
 
630
        }
 
631
return ;
 
632
}
 
633
 
 
634
void conv_bits2_to_bits2plane_one(Word8 *bout,Word8 *text,
 
635
                                   Word8 msk1,Word8 msk2,Word8 msk3,Word8 msk4,
 
636
                                   Int16 len)
 
637
{
 
638
Int16  i;
 
639
Word8 c;
 
640
for(i=0;i<len;i++,text+=2)
 
641
        {
 
642
        c = ( (text[0]&msk1)!=0 );
 
643
        c  <<= 1;
 
644
        if( text[0]&msk2 )      c |= 1;
 
645
        c  <<= 1;
 
646
        if( text[0]&msk3 )      c |= 1;
 
647
  c  <<= 1;
 
648
        if( text[0]&msk4 )      c |= 1;
 
649
  c  <<= 1;
 
650
        if( text[1]&msk1 )      c |= 1;
 
651
  c  <<= 1;
 
652
        if( text[1]&msk2 )      c |= 1;
 
653
  c  <<= 1;
 
654
        if( text[1]&msk3 )      c |= 1;
 
655
  c  <<= 1;
 
656
        if( text[1]&msk4 )      c |= 1;
 
657
        *bout++ = c;
 
658
        }
 
659
return ;
 
660
}