1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
|
Network Working Group A. Katz
Request for Comments: 798 ISI
September 1981
DECODING FACSIMILE DATA FROM THE RAPICOM 450
I. Introduction
This note describes the implementation of a program to decode
facsimile data from the Rapicom 450 facsimile (fax) machine into an
ordinary bitmap. This bitmap can then be displayed on other devices
or edited and then encoded back into the Rapicom 450 format. In
order to do this, it was necessary to understand the how the
encoding/decoding process works within the fax machine and to
duplicate that process in a program. This algorithm is descibed in
an article by Weber [1] as well as in a memo by Mills [2], however,
more information than is presented in these papers is necessary to
successfully decode the data.
The program was written in L10 as a subsystem of NLS running on
TOPS20. The fax machine is interfaced to TOPS20 as a terminal
through a microprocessor-based interface called FAXIE.
Grateful acknowledgment is made to Steve Treadwell of University
College, London and Jon Postel of Information Sciences Institute for
their assistance.
II. Interface to TOPS20
The fax machine is connected to a microprocessor-based unit called
FAXIE, designed and built by Steve Casner and Bob Parker. More
detailed information can be found in reference [3]. FAXIE is
connected to TOPS20 over a terminal line, and a program was written
to read data over this line and store it in a file. The decoding
program reads the fax data from this file.
The data comes from the fax machine serially. FAXIE reads this data
into an 8-bit shift register and sends the 8-bit byte (octet) over
the terminal line. Since the fax machine assigns MARK to logical 0's
and SPACE to logical 1's (which is backward from RS232), FAXIE
complements each bit in the octet. The data is sent to TOPS20 in
octets, the most significant bit first. If you read each octet from
most significant bit to least significant bit in the order FAXIE
sends the data to TOPS20, you would be reading the data in the same
order in comes into FAXIE from the fax machine.
The standard for storing Rapicom 450 Facsimile Data is described in
RFC 769 [4]. According to this standard, each octet coming from
FAXIE must be complemented and inverted (i.e. invert the order of the
bits in the octet). Thus, the receiving program did this before
Alan R. Katz [page 1]
^L
DECODING FACSIMILE DATA RFC 798
II. Interface to TOPS20
storing the data in a file. When the decoding program reads this
file, it must invert and complement each octet before reading the
data.
Each data block from the fax machine is 585 bits long. The end of
this data is padded with 7 0's to make 592 bits or 74 octets.
According to RFC 769, this data is stored in a file preceded by a
length octet and a command octet. The possible commands are:
56 (70 octal)--This is a Set-Up block (the first block of the
file, contains information about the fax image)
57 (71 octal)--This is a data block (the rest of the blocks in the
file except for the last one)
58 (72 octal)--End command (the last block of the file)
The length field tells how many octets in this block and is always 76
(114 octal) except for the END command which can be 2 (no data). The
length and command octets are NOT inverted and complemented.
Below is a diagram of each block in the file:
+--------+--------+--------+--------+--------+--------+--------
| length | command| data | data | ... | |
+--------+--------+--------+--------+--------+--------+--------
III. The Rapicom 450 Encoding Algorithm
An ordinary 8 1/2" by 11" document is made up of about 2100 scan
lines, each line has 1726 pels (picture elements) in it. Each pel
can be either black (1) or white (0).
The Rapicom 450 has three picture quality modes. In fine detail
mode, all of the document is encoded. In quality mode only every
other scan line is encoded and it is intended that these missing
lines are filled in on playback by replicating the previous line.
There is also express mode, where only every third line is encoded.
[page 2] Alan R. Katz
^L
RFC 798 DECODING FACSIMILE DATA
III. The Rapicom 450 Encoding Algorithm
Data is encoded two lines at a time, using a special two dimensional
run-length encoding scheme. There are 1726 pels on top and 1726 pels
on the bottom. Each pair (top-bottom) of pels is called a column.
For each of the 1726 columns you can have any one of four
configurations (called states):
column
(top-bottom) pels state
------------ ---- ------
W-W 0,0 0
W-B 0,1 1
B-W 1,0 2
B-B 1,1 3
The encoding algorithm can be described in terms of a
non-deterministic finite-state automaton shown in Fig. 1 (after Mills
[2]). You start out in a state (0-3) and transform to another state
by emitting the appropriate bits marked along the arcs of the
diagram. For example, suppose you are in state 1 (WB). To go to
state 2 (BW), you would output the bits 101 (binary); to go to state
0 (WW) you would output the bits 1000. Note that the number of bits
on each transition is variable.
In states 0 (WW) and 3 (BB), a special run length encoding scheme is
used. There are two state variables associated with each of these
states. One variable is a run-length counter and the other is the
field length (in bits) of this counter. Upon entry to either of
these two states, the counter is initialized to zero and is
incremented for every additional column of the same state. At the
end of the run, this counter is transmitted, extending with high
order zeros if necessary. If the count fills up the field, it is
transmitted, the field length is incremented by one, and the count
starts again. This count is called the run length word and it is
between 2 and 7 bits long.
For example, suppose we are in state 0 (WW) and the run length for
this state (refered to as the white run length) is 3. Suppose there
are three 0's in a row. The first 0 was encoded when we came to this
state, there are two more 0's that must be encoded. Thus we would
send a 010 (binary). Similarly, if there are seven 0's in a row, we
would send a 110, but eight 0's would be sent by 111 followed by 0000
and the white run length becomes 4. (Ten 0's would be encoded as 111
followed by 0010 and the white run length would be 4).
Alan R. Katz [page 3]
^L
DECODING FACSIMILE DATA RFC 798
III. The Rapicom 450 Encoding Algorithm
0100
------------------------>-----------------------------------
| |
| -------------------<------------------------------- |
| | 1 | |
| V | |
---------------- ----------------- | |
| | | | | |
| | 010 | | | |
|->| 2 |---------------------->| 1 |->| | |
| | | | | | | |
0| | B-W | 101 | W-B | |1 | |
|<-| |<----------------------| |<-| | |
| | | | | |
| | ----->| | | |
---------------- | ----------------- | |
| ^ | | | ^ | |
| | ------------>------| | | | | |
| | | 1 | | | | |
| | | | | | ^ V
| | | | | | | |
0111| |1 | | 1000| |1 | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | 1011 | | | | |
| | | ----------<----------- | | | |
V | | | V | | |
---------------- | ----------------- | |
| |<--- | | | |
| | 0 | | | |
| 3 |<----------------------| 0 |------ |
| | | | |
| B-B | | W-W | |
| |---------------------->| |<---------
| | 0 | |
| | | |
---------------- -----------------
| ^ | ^
| | | |
------ ------
run run
Figure 1.
Non-deterministic finite-state machine diagram for RAPICOM 450
[page 4] Alan R. Katz
^L
RFC 798 DECODING FACSIMILE DATA
III. The Rapicom 450 Encoding Algorithm
Run length word lengths must be between 2 and 7. The field length is
decremented if the run is encoded in one word and:
1. If the run length is 3 and the highest order bit is 0.
2. Or, if the run length is 4, 5, 6, or 7 and the highest order 2
bits are 0.
In addition to all this, there is a special rule to follow if the run
occupies at least two run words (and can involve incrementing the run
word size) and the run ends exactly at the end of a scan line. In
this case, the last word of the run is tested for decrement as if the
previous words in the run did not exist.
An Example:
To confirm the reader's understanding of the encoding procedure,
suppose we had the following portion of a document (1=black,
0=white):
top row: 0 1 1 1 1 1 0 0 0 0 0 1 1 0 0 0 ...
bottom row: 1 1 1 1 1 0 0 0 0 0 0 0 0 1 0 0 ...
----------- -------------------------------
state: 1 3 3 3 3 2 0 0 0 0 0 2 2 1 0 0 ...
Suppose also that the black run field length is 2, the white run
length is 3, and the state is 1. (This example comes from
reference [1].)
This portion would be encoded as:
1 1011 11 000 1 0100 100 1 0 010 1000 ...
NOTE: It turns out that the Rapicom 450 sends the bits of a field
in reverse order. This will be discussed in the section V.
However, since each run length field is sent reversed, the above
encoded bit pattern would actually be sent as:
1 1011 11 000 1 0100 001 1 0 010 1000 ...
^
|-this is actually 100 reversed
Alan R. Katz [page 5]
^L
DECODING FACSIMILE DATA RFC 798
III. The Rapicom 450 Encoding Algorithm
Another Example:
This example illustrates the rule for decrementing the run length
word lengths:
top row: 0 1 1 0 0 1 1 1 1 1 0 0 ...
bottom row: 1 1 1 1 1 0 1 1 1 1 1 0 ...
----------- -----------------------
state: 1 3 3 1 1 2 3 3 3 3 1 0 ...
Here, let us suppose that the black run field length is now 4, the
white is still 3, and the state is 1.
This portion would be encoded as:
1 1011 0001 1 1 101 0111 011 1 1000 ...
^ ^
|-goes to 3 |-blk cnt goes to 2
When we reverse the order of the run fields, the bit pattern that
is actually sent is:
1 1011 1000 1 1 101 0111 110 1 1000 ...
^
|-this is actually 0001 reversed, etc.
IV. The Setup Block and the Data Header
Each data block from the fax machine is 585 bits long. The number of
blocks in a picture is variable and depends on the size and
characteristics of the picture. It should be emphasized that a block
can end in the middle of a scan line of the document. There can in
fact be many scan lines in a block.
The 585 bit data block is composed of a 24 bit sync code which is
used to recognize the beginning of a block, a 37 bit header, 512 bits
of actual data, and a 12 bit CRC checksum:
------------------------------------------------------------------
| 24-bit | 37-bit | 512-bit | 12-bit |
|sync code | header | data | checksum |
------------------------------------------------------------------
The number of useful data bits is variable and can be between 0 and
512 (although there are always 512 bits there, some of them are to be
ignored). The number of data bits to be used is given in the header.
[page 6] Alan R. Katz
^L
RFC 798 DECODING FACSIMILE DATA
IV. The Setup Block and the Data Header
The 37 bits of header is composed of:
------------------------------------------------------------------
| 2-bit |5-bit| 10-bit | 12-bit | 3-bit | 3-bit |2-bit|
|seq num|flags|data count| x position|black size|white size|state|
------------------------------------------------------------------
An explanation of these fields follows:
IMPORTANT NOTE: Most (but not all) of these fields are sent by
the fax machine in REVERSE ORDER. The order of each n-bit field
must be inverted.
Sync code
This is used to synchronize on each block. The value of this
24 bit field is 30474730 octal (not reversed).
Sequence number
This number cycles through 0, 1, 2, 3 for the data blocks. It
is 0 for the Set-Up block (not reversed).
Flags
Each of these flags are 1 bit wide:
Run
Purpose unknown, it always seems to be 1.
Cofb
Purpose unknown, it always seems to be 0.
Rpt
1 for Set-Up blocks (which are repeated when coming from
the fax machine though only one of them is transfered by
FAXIE to TOPS20 and stored in the file) and 0 for data
blocks.
Spare
Purpose unknown, doesn't matter.
Alan R. Katz [page 7]
^L
DECODING FACSIMILE DATA RFC 798
IV. The Setup Block and the Data Header
Sub
1 if this is a Set-Up block.
Data Count
Number of useful bits to use out of the 512 data bits. NOT ALL
of the 512 data bits are used, only this number of them. This
number can be 0 (usually in one of the first data blocks) which
means to throw away this block. (This field is reversed!)
X Position
Current position on the scan line, a value between 0 and 1725.
If this number is greater than where the previous block left
off, the intervening space should be filled with white (0's).
If this number is less than where the previous block left off,
set the X position to this value and replace the overlapped
data with the new data from this block. If this number is
greater than 1726, ignore this field and continue from where
the previous block left off. (This field is reversed!)
Black Size
The size of the black run length field, must be between 2 and
7. This is the correct value for the black size. It may
differ from what was found at the end of the previous block.
(This field is reversed!)
White Size
The size of the white run length field, must be between 2 and
7. It may differ from what was found at the end of the
previous block. (This field is reversed!)
State
The current state. This is the correct state. It may differ
from the state at the end of the previous block. (This field is
not reversed.)
Data
512 bits of the actual encoding of the document. NOT ALL of
this data is used in general, only the amount specified by the
[page 8] Alan R. Katz
^L
RFC 798 DECODING FACSIMILE DATA
IV. The Setup Block and the Data Header
data count. If this is a set up block, the data contains
information about the type of document (see below).
Checksum
CRC checksum on the entire block. Uses polynomial
x**12+x**8+x**7+x**5+x**3+1.
In a setup block, the data portion of the data block consists of:
-----------------------------------------------------------
| 6-bit | 5-bit | 1-bit | 20-bits | 480-bits
| flags | spare |multi page| of zeros | 1's and 0's
-----------------------------------------------------------
Specifically these are:
6 flags (each are 1 bit):
Start bit
Always 0.
Speed
Is 1 if express mode.
Detail
Is 1 if detail mode. (NOTE: If the Detail and Speed flags
are both 0, then data is in Quality mode).
14 inch paper
is 1 if 14 inch paper length.
5.5 inch paper
is 1 if 5.5 inch paper length. (NOTE: If the 14 inch and 5
inch flags are both 0, then paper length is 11 inch).
paper present
is 1 if paper is present at scanner (should be always 1).
Alan R. Katz [page 9]
^L
DECODING FACSIMILE DATA RFC 798
IV. The Setup Block and the Data Header
Spare:
These 5 bits can be any value.
Multi-page:
1 if multi page mode
Rest of data of set-up block:
The above fields are followed by twenty 0 bits and the rest of
the 512 bits of the block are alternating 0's and 1's.
There are a number of important points to be remembered in regard to
the header of a data block. First of all, the data count, the
x-position, and the black and white run sizes must be read IN REVERSE
ORDER. The reason for this is that the fax machine sends these bits
in reverse order. However, the sequence number and the state fields
ARE NOT REVERSED. In addition to this, each run field in the data IS
REVERSED. This reversing of the bits in each n-bit field is
completely separate from the reversing and complementing of each
octet mentioned earlier.
Second, only the first n bits, where n is the value of the data count
field (remember its reversed!), of the data is valid, the rest is to
be ignored. If n is zero, the whole block is to be ignored.
Third, if the x position is beyond where the last block ended, fill
the space between where the last block ended and the current x
postion with white (0's). If the x postition is less then where the
last block ended, replace the overlapped data with the data in the
new block. If the x postition is greater than 1726, ignore it and
continue from where the previous block left off.
Fourth, the black size, white size (reversed), and state (not
reversed!) given in the header are the correct values even if they
disagree with the end of the previous block.
Finally, the sequence number (not reversed) should count through
0,1,2,3. If it does not, a block is missing.
[page 10] Alan R. Katz
^L
RFC 798 DECODING FACSIMILE DATA
V. The Decoding Algorithm
V. The Decoding Algorithm
Upon first glance at the finite state diagram in Figure 1, it may
seem that it would be difficult to create a decoding procedure. For
example, if you are in the WW state, and the next bit is a 1, how do
you know whether to do a transition to WB or BW? The answer to this
is to recognize that every arc out of the BW state begins with 0 and
every arc out of WB begins with 1. Thus, if you are in the WW state,
and the next bit is 1, followed by a 0, you know to go to the BW
state. If the next bit is 1, followed by a 1, you know to go to the
WB state.
In writing the decoding program it was necessary to have two ways of
reading the next bit in the data stream. The first way reads the bit
and "consumes" it, i.e. increments the bit pointer to point at the
next bit. The other way does not "consume" it. Below are four
statements which show how to decode fax data. The numbers in
parentheses are not to be consumed, that is to say they will be read
again in making the next transition.
If I am in state BW (2) and the next bits are:
0 (0): go to BW
0111: go to BB
010 (1): go to WB
0100: go to WW
If I am in state WB (1) and the next bits are:
1 (1): go to WB
1000: go to WW
101 (0): go to BW
1011: go to BB
If I am in state WW (0), then first go through the run length
algorithm, then if the next bits are:
0: go to BB
1 (0): go to BW
1 (1): go to WB
If I am in state BB (3), then first go through the run length
algorithm, then if the next bits are:
0: go to WW
1 (0): go to BW
1 (1): go to WB
For the run length algorithm, remember, look at the next n bits,
where n is the length of either the black or white run length
Alan R. Katz [page 11]
^L
DECODING FACSIMILE DATA RFC 798
V. The Decoding Algorithm
word, REVERSE the bits, and output that many BB's or WW's
(depending on whether black or white run). If the field is full,
increment the size of the word, and get that many bits more, i.e.
get the next n+1 bits, etc. Also, the run length word length can
be decremented according to the rules given in section III.
You always go through the run length even if there is only one WW
or BB, in this case, the run field will be 0.
Let us look at the first example given in section III. Suppose we
want to decode the bits: 110111100010100100100101000... (we have
already reversed the run lengths to make things easier).
We are in state 1 (WB) and the black run length word length is 2
and the white length is 3. We get these initial values either
from the block header, or by remembering them from the previous
transitions if this is not the start of the block. According to
our rules, we would parse this string as follows:
1(1) 1011 11 000 1(0) 0100 100 1(0) 0(0) 010(1) 1000...
The numbers in parentheses are numbers that were read but not
"consumed", thus the next number in the sequence is the same as
the one in parentheses. First, we see a 1 and that the next bit
is a 1, this means that we go to WB. Then we have a 1011 which
means to go to BB. Then we do a run, we have a 11 followed by a
000 which means the black run length gets incremented by 1 (it is
now 3) and we get 3 MORE BB's. Now we have a 1 followed by 0
which means go to BW. Next a 0100 which is WW. Then we have a
run, 100, which means four more WW's. We keep going like this and
we get the original bit pattern given in the first example of
section III.
It is important to always start fresh when dealing with each
block. There are many reasons for this. The first is that
sometimes blocks are dropped, and you can recover from this if you
resynchronize at the start of each block. Also, if at the end of
the previous block, there is about to be a transition, instead of
making it at the beginning of the next block, the fax machine
gives the new state in the header of the next block and goes from
there. Thus it is important to always start at whatever state is
given in the header, and to align yourself at the current X
position given there also.
Sometimes, while decoding a block, a bit pattern will occur which
[page 12] Alan R. Katz
^L
RFC 798 DECODING FACSIMILE DATA
V. The Decoding Algorithm
does not correspond to any transition. If this happens, the rest
of the block may be bad and should be discarded.
The decoding program decodes the fax data block by block until it
comes to an END command in the data, or runs out of data.
VI. Program Performance
The L10 NLS program takes about two CPU minutes to run on TOPS20 on a
DEC KL10 to decode the average document in fine detail mode. In this
mode, the picture is about 1726 by 2100 pels, and takes about 204
disk pages to store.
We have a program which displays bit maps on an HP graphics terminal
and have been able to display portions of documents. (not all of an
8.5" by 11" document will fit in the display). We can use the
terminal's zoom capability to look at very small portions of the
document.
Alan R. Katz [page 13]
^L
DECODING FACSIMILE DATA RFC 798
References
References
[1] Weber, D. R., "An Adaptive Run Length Encoding Algorithm",
International Conference on Communications, ICC-75, IEEE, San
Francisco, California, June 1975.
[2] Mills, D. L., "Rapicom 450 Facsimile Data Decoding",
WP2097/MD33E, COMSAT Laboratories, Washington D.C., undated.
[3] Casner, S. L., "Faxie", ISI Internal Memo, USC/Information
Sciences Institute, February 1980.
[4] Postel, Jon, "Rapicom 450 Facsimile File Format", RFC 769,
USC/Information Sciences Institute, September 1980.
[page 14] Alan R. Katz
^L
RFC 798 DECODING FACSIMILE DATA
Appendix
Appendix
In this appendix is given the first portion of the data which comes
from the fax machine, this same data in RFC 769 format, and some of
this data decoded into a bitmap. The data is represented in octal
octets.
The following is data of the form which comes out of the fax machine
with length and command octets added:
114 70 142 171 330 13 377 377 377 371 53 200 0 5 125 125
125 125 125 125 125 125 125 125 125 125 125 125 125 125 125 125
125 125 125 125 125 125 125 125 125 125 125 125 125 125 125 125
125 125 125 125 125 125 125 125 125 125 125 125 125 125 125 125
125 125 125 125 125 125 125 125 125 121 21 261 114 71 142 171
330 40 0 102 326 270 152 42 42 44 111 0 42 151 267 122
366 110 237 102 211 365 111 171 336 51 244 247 377 377 111 362
177 377 377 377 377 377 377 377 377 376 104 213 241 41 111 377
111 337 377 377 377 377 377 377 377 377 377 377 377 163 301 361
377 377 377 377 360 177 12 0 114 71 142 171 330 141 137 177
377 344 10 0 160 23 301 160 137 376 204 352 135 27 353 264
0 70 100 7 20 75 0 0 0 0 0 344 0 0 0 0
0 0 0 0 34 275 0 0 0 0 0 0 0 0 0 0
0 0 0 0 7 41 310 34 200 0 0 344 0 0 0 71
13 331 204 0 114 71 142 171 330 241 137 26 302 160 0 16
100 71 0 370 270 271 0 162 0 71 174 134 100 162 0 34
234 200 344 7 156 100 1 310 16 107 43 323 263 220 365 313
327 57 377 325 331 36 56 47 325 324 344 3 227 40 71 35
200 1 310 1 313 220 0 0 7 241 330 0 0 137 342 200
114 71 142 171 330 340 77 40 142 160 0 0 0 0 162 71
73 162 376 276 234 277 376 67 265 301 16 20 171 1 311 313
346 377 321 75 256 113 245 377 262 160 136 247 13 251 350 374
270 236 235 217 136 203 220 75 166 166 364 177 305 366 72 107
63 330 352 345 313 320 71 34 270 46 57 0
The following is the same data after put into RFC 769 format (with
each data octet reversed and complemented):
114 70 271 141 344 57 0 0 0 140 53 376 377 137 125 125
125 125 125 125 125 125 125 125 125 125 125 125 125 125 125 125
125 125 125 125 125 125 125 125 125 125 125 125 125 125 125 125
125 125 125 125 125 125 125 125 125 125 125 125 125 125 125 125
125 125 125 125 125 125 125 125 125 165 167 162 114 71 271 141
344 373 377 275 224 342 251 273 273 333 155 377 273 151 22 265
220 355 6 275 156 120 155 141 204 153 332 32 0 0 155 260
1 0 0 0 0 0 0 0 0 200 335 56 172 173 155 0
Alan R. Katz [page 15]
^L
DECODING FACSIMILE DATA RFC 798
Appendix
155 4 0 0 0 0 0 0 0 0 0 0 0 61 174 160
0 0 0 0 360 1 257 377 114 71 271 141 344 171 5 1
0 330 357 377 361 67 174 361 5 200 336 250 105 27 50 322
377 343 375 37 367 103 377 377 377 377 377 330 377 377 377 377
377 377 377 377 307 102 377 377 377 377 377 377 377 377 377 377
377 377 377 377 37 173 354 307 376 377 377 330 377 377 377 143
57 144 336 377 114 71 271 141 344 172 5 227 274 361 377 217
375 143 377 340 342 142 377 261 377 143 301 305 375 261 377 307
306 376 330 37 211 375 177 354 217 35 73 64 62 366 120 54
24 13 0 124 144 207 213 33 124 324 330 77 26 373 143 107
376 177 354 177 54 366 377 377 37 172 344 377 377 5 270 376
114 71 271 141 344 370 3 373 271 361 377 377 377 377 261 143
43 261 200 202 306 2 200 23 122 174 217 367 141 177 154 54
230 0 164 103 212 55 132 0 262 361 205 32 57 152 350 300
342 206 106 16 205 76 366 103 221 221 320 1 134 220 243 35
63 344 250 130 54 364 143 307 342 233 13 377
The following is the first part of the expanded bitmap of this data
(there are about 4 scan lines here, or 2 pairs of scan lines):
177 377 377 377 377 377 377 377 377 377 377 377 377 377 377 377
377 377 377 377 377 377 377 377 377 377 377 377 377 377 377 377
377 377 377 377 377 377 377 377 377 377 377 377 377 377 377 377
377 377 377 377 377 377 367 377 377 377 377 377 377 377 377 377
377 377 377 377 377 377 377 377 377 377 377 377 377 377 377 377
377 377 377 377 377 377 377 377 377 377 377 377 377 377 377 377
337 377 377 377 377 377 377 377 377 377 377 377 377 377 377 377
377 377 377 377 377 377 377 377 377 377 377 377 377 377 377 377
377 377 377 377 377 377 377 377 377 377 377 377 377 377 377 377
377 377 377 377 377 377 377 377 377 377 377 377 377 377 377 377
377 377 377 377 377 377 377 377 377 377 377 377 377 377 377 377
377 377 377 377 377 377 377 377 377 377 377 377 377 377 377 377
377 377 377 377 377 377 377 377 377 377 377 377 377 377 377 377
377 377 377 377 377 377 377 374 0 4 327 377 377 377 377 377
374 377 356 377 177 0 10 0 201 200 0 0 0 0 100 0
0 0 0 0 0 0 1 140 0 0 0 0 0 0 0 0
0 0 0 0 0 0 204 10 0 0 10 0 0 0 100 0
20 10 7 250 2 0 57 100 100 2 100 100 164 0 20 21
31 310 153 137 377 377 377 377 177 32 176 344 2 200 216 0
4 0 240 0 0 14 70 0 0 0 0 0 2 47 137 336
137 377 377 377 377 375 377 372 20 140 45 376 377 377 377 237
377 276 357 377 377 377 227 345 314 175 63 215 202 6 347 143
377 337 376 70 371 370 352 300 213 373 371 377 377 343 73 334
0 207 315 3 33 111 377 167 337 377 1 323 365 177 377 177
377 374 377 135 377 377 365 67 343 55 377 377 377 377 357 377
377 377 377 377 377 377 203 377 236 175 376 236 337 273 347 377
[page 16] Alan R. Katz
^L
RFC 798 DECODING FACSIMILE DATA
Appendix
376 77 377 377 377 377 377 377 377 377 377 377 300 0 0 0
200 102 177 377 277 377 377 377 376 377 366 365 173 302 12 0
40 200 0 0 0 4 100 0 0 0 0 0 0 2 5 354
0 0 0 0 0 0 0 0 4 0 10 0 0 0 200 10
40 20 1 0 100 0 140 0 20 210 101 374 3 200 155 304
0 6 100 103 376 0 120 121 31 332 243 177 377 377 377 377
377 233 377 354 0 241 217 1 30 0 240 0 0 12 150 202
40 0 0 0 62 47 157 376 173 373 377 377 377 377 377 377
20 141 321 376 377 377 377 327 377 376 377 377 377 377 237 216
316 375 167 215 202 6 300 143 377 237 374 70 175 330 377 304
255 373 153 377 377 353 377 104 0 267 315 203 13 311 177 377
377 377 1 223 367 377 373 167 377 376 77 137 377 345 165 67
43 51 277 377 277 377 357 377 377 377 373 177 377 377 223 377
366 175 376 234 377 271 347 377 376 157 377 377 377 377 377 377
377 377 377 377 340 0 0 0 0 0 177 377 37 377 377 377
377 376 367 357 272 300 2 0 4 0 0 0 0 0 0 0
0 0 0 0 20 0 1 144 0 0 0 0 0 0 4 4
0 0 100 2 100 10 201 10 0 20 75 0 0 40 142 0
0 74 341 234 103 4 157 300 0 2 0 141 372 0 0 20
30 376 55 277 177 377 377 367 377 371 376 100 15 61 16 200
30 0 40 0 0 0 311 200 24 0 0 0 62 55 377 316
367 347 377 357 377 377 377 377 170 305 5 276 377 377 377 357
377 377 377 377 377 177 377 377 357 177 377 76 207 246 340 147
376 336 356 10 17 320 105 235 275 377 377 373 377 347 335 317
50 77 377 353 75 333 377 377 377 377 363 337 343 277 356 171
7 357 76 216 377 211 207 176 257 217 377 377 367 357 357 277
377 357 377 377 377 375 367 377 377 377 377 375 377 377 356 377
366 377 377 377 377 377 377 377 377 377 377 377 340 0 0 0
0 44 373 377 77 377 377 177 177 377 377 337 376 170 173 0
0 0 100 0 1 10 0 0 0 0 0 200 160 0 223 160
300 0 0 0 0 0 0 6 100 220 0 0 140 4 3 30
121 20 351 300 206 74 167 0 30 64 41 234 172 30 175 300
4 32 4 345 367 200 103 60 177 372 177 233 377 377 377 377
376 125 207 210 233 21 364 361 277 1 50 16 140 120 41 335
377 306 214 10 67 377 373 377 377 377 377 377 377 367 377 377
377 363 277 377 377 377 377 377 267 177 377 377 377 377 377 237
377 377 377 77 377 377 355 373
Alan R. Katz [page 17]
^L
|