aboutsummaryrefslogtreecommitdiffstats
path: root/recipes/dvbtools
diff options
context:
space:
mode:
authorKoen Kooi <koen@openembedded.org>2010-12-21 12:18:53 +0100
committerKoen Kooi <koen@openembedded.org>2010-12-21 12:20:20 +0100
commit2ce320cafab63411b3eeb0be74c9190393e49fad (patch)
tree8b54e46ada9f1813a174c5dfd7ad68654e961a3e /recipes/dvbtools
parent7723400e2b7853fc786712adaa09037b9dc708aa (diff)
downloadopenembedded-2ce320cafab63411b3eeb0be74c9190393e49fad.tar.gz
dvb-apps: update to current hg tip to fix build issues with recent gcc versions
Signed-off-by: Koen Kooi <koen@openembedded.org>
Diffstat (limited to 'recipes/dvbtools')
-rw-r--r--recipes/dvbtools/dvb-apps-1.1.1/update-to-tip.diff37589
-rw-r--r--recipes/dvbtools/dvb-apps-1.1.1/update-to-trunk.diff13
-rw-r--r--recipes/dvbtools/dvb-apps_1.1.1.bb5
3 files changed, 37604 insertions, 3 deletions
diff --git a/recipes/dvbtools/dvb-apps-1.1.1/update-to-tip.diff b/recipes/dvbtools/dvb-apps-1.1.1/update-to-tip.diff
new file mode 100644
index 0000000000..b91a7506d7
--- /dev/null
+++ b/recipes/dvbtools/dvb-apps-1.1.1/update-to-tip.diff
@@ -0,0 +1,37589 @@
+Update to:
+
+changeset 1406:c87abbb20491 tip
+
+update scan file for fr-Reims
+submitted by sylvestre.cartier gmail.com
+author Christoph Pfister <pfister@linuxtv.org>
+date Sun Nov 28 21:24:42 2010 +0100 (3 weeks ago)
+parents ce1c094b9636
+
+
+Make.rules | 2
+ README | 7
+ a/util/scan/dvb-t/be-Brussels | 5
+ a/util/scan/dvb-t/be-Libramont | 10
+ a/util/scan/dvb-t/be-Schoten | 3
+ a/util/scan/dvb-t/be-St_Pieters_Leeuw | 3
+ a/util/scan/dvb-t/be-Tournai | 3
+ a/util/scan/dvb-t/cz-Brno | 10
+ a/util/scan/dvb-t/cz-Domazlice | 3
+ a/util/scan/dvb-t/cz-Klet | 4
+ a/util/scan/dvb-t/cz-Ostrava | 3
+ a/util/scan/dvb-t/cz-Plzen | 8
+ a/util/scan/dvb-t/cz-Praha | 7
+ a/util/scan/dvb-t/fr-Lille | 30
+ a/util/scan/dvb-t/fr-LilleT2 | 13
+ a/util/scan/dvb-t/hr-Zagreb | 3
+ b/util/alevt/COPYRIGHT | 297 +
+ b/util/alevt/ChangeLog | 535 ++
+ b/util/alevt/EXPORT.HOWTO | 84
+ b/util/alevt/Makefile | 130
+ b/util/alevt/README | 72
+ b/util/alevt/README.OLD | 78
+ b/util/alevt/ReadmeGR | 28
+ b/util/alevt/TODO | 12
+ b/util/alevt/alevt-cap.1 | 53
+ b/util/alevt/alevt-cap.c | 280 +
+ b/util/alevt/alevt-date.1 | 41
+ b/util/alevt/alevt-date.c | 225 +
+ b/util/alevt/alevt.1 | 60
+ b/util/alevt/alevt.desktop | 9
+ b/util/alevt/bdf2xbm.c | 212 +
+ b/util/alevt/cache.c | 229 +
+ b/util/alevt/cache.h | 41
+ b/util/alevt/dllist.h | 55
+ b/util/alevt/exp-gfx.c | 258 +
+ b/util/alevt/exp-html.c | 299 +
+ b/util/alevt/exp-txt.c | 226 +
+ b/util/alevt/export.c | 364 +
+ b/util/alevt/export.h | 66
+ b/util/alevt/fdset.c | 97
+ b/util/alevt/fdset.h | 28
+ b/util/alevt/font.c | 5
+ b/util/alevt/font.h | 19
+ b/util/alevt/hamm.c | 229 +
+ b/util/alevt/hamm.h | 7
+ b/util/alevt/help.c | 83
+ b/util/alevt/help.h | 8
+ b/util/alevt/icon.xbm | 17
+ b/util/alevt/lang.c | 393 +
+ b/util/alevt/lang.h | 28
+ b/util/alevt/main.c | 221 +
+ b/util/alevt/misc.c | 66
+ b/util/alevt/misc.h | 32
+ b/util/alevt/os.h | 7
+ b/util/alevt/search.c | 127
+ b/util/alevt/search.h | 16
+ b/util/alevt/ui.c | 721 +++
+ b/util/alevt/ui.h | 35
+ b/util/alevt/vbi.c | 942 ++++
+ b/util/alevt/vbi.h | 47
+ b/util/alevt/vt.h | 62
+ b/util/alevt/vt900.out | 29
+ b/util/alevt/vt901.out | 29
+ b/util/alevt/vt902.out | 29
+ b/util/alevt/vt903.out | 29
+ b/util/alevt/vt904.out | 29
+ b/util/alevt/vt905.out | 29
+ b/util/alevt/vt906.out | 29
+ b/util/alevt/vt907.out | 29
+ b/util/alevt/vt908.out | 29
+ b/util/alevt/vt909.out | 29
+ b/util/alevt/vt910.out | 29
+ b/util/alevt/vt911.out | 29
+ b/util/alevt/vt912.out | 29
+ b/util/alevt/vt913.out | 29
+ b/util/alevt/vt914.out | 29
+ b/util/alevt/vt915.out | 29
+ b/util/alevt/vtxt-iso8859-7.bdf | 5768 ++++++++++++++++++++++++++++
+ b/util/alevt/vtxt-koi8.bdf | 5906 +++++++++++++++++++++++++++++
+ b/util/alevt/vtxt-latin-1.bdf | 5906 +++++++++++++++++++++++++++++
+ b/util/alevt/vtxt-latin-2.bdf | 5906 +++++++++++++++++++++++++++++
+ b/util/alevt/xio.c | 1156 +++++
+ b/util/alevt/xio.h | 80
+ b/util/gotox/Makefile | 17
+ b/util/gotox/gotox.c | 145
+ b/util/scan/dvb-c/at-Kabel-Braunau | 26
+ b/util/scan/dvb-c/at-Kabelsignal | 38
+ b/util/scan/dvb-c/de-komro-Rosenheim | 30
+ b/util/scan/dvb-c/fi-Oulu | 19
+ b/util/scan/dvb-c/hu-Digikabel | 21
+ b/util/scan/dvb-c/nl-REKAM-CAIW_Gouda | 4
+ b/util/scan/dvb-s/Agila2_C-146.0E | 60
+ b/util/scan/dvb-s/Apstar6_C-134.0E | 15
+ b/util/scan/dvb-s/AsiaSat2_C-100.5E | 51
+ b/util/scan/dvb-s/Asiasat4_C-122.2E | 27
+ b/util/scan/dvb-s/Astra-23.5E | 66
+ b/util/scan/dvb-s/Atlantic-Bird-3-5.0W | 4
+ b/util/scan/dvb-s/Chinastar1_C-87.5E | 15
+ b/util/scan/dvb-s/Insat2E_C-83.0E | 93
+ b/util/scan/dvb-s/Insat3A_C-93.5E | 66
+ b/util/scan/dvb-s/Insat4A_C-83.0E | 93
+ b/util/scan/dvb-s/Insat4B_C-93.5E | 51
+ b/util/scan/dvb-s/Intelsat8_C-166.0E | 39
+ b/util/scan/dvb-s/JCSat3A_C-128.0E | 18
+ b/util/scan/dvb-s/Measat3_C-91.5E | 54
+ b/util/scan/dvb-s/PalapaC2_C-113.0E | 39
+ b/util/scan/dvb-s/ST1_C-80.0E | 27
+ b/util/scan/dvb-s/Telkom1_C-108.0E | 48
+ b/util/scan/dvb-s/Telstar10_C-76.5E | 63
+ b/util/scan/dvb-s/Telstar18_C-138.0E | 18
+ b/util/scan/dvb-s/Thaicom1A_C-120.0E | 24
+ b/util/scan/dvb-s/Thaicom2_C-78.5E | 33
+ b/util/scan/dvb-s/Thaicom5_C-78.5E | 69
+ b/util/scan/dvb-s/Vinasat1_C-132.0E | 12
+ b/util/scan/dvb-t/au-AdelaideFoothills | 12
+ b/util/scan/dvb-t/au-Ballarat | 12
+ b/util/scan/dvb-t/au-Bendigo | 41
+ b/util/scan/dvb-t/au-Devonport | 19
+ b/util/scan/dvb-t/au-FraserCoast-Bundaberg | 12
+ b/util/scan/dvb-t/au-Goulburn-Rocky_Hill | 19
+ b/util/scan/dvb-t/au-Hervey_Bay-Ghost_Hill | 16
+ b/util/scan/dvb-t/au-Sutherland | 20
+ b/util/scan/dvb-t/be-All | 8
+ b/util/scan/dvb-t/ch-Geneva | 16
+ b/util/scan/dvb-t/cz-All | 41
+ b/util/scan/dvb-t/es-BaixoMinho | 16
+ b/util/scan/dvb-t/es-Granada | 8
+ b/util/scan/dvb-t/es-Pamplona | 9
+ b/util/scan/dvb-t/es-SC_Tenerife | 18
+ b/util/scan/dvb-t/es-Vitoria-Gasteiz | 8
+ b/util/scan/dvb-t/fi-Smedsbole | 13
+ b/util/scan/dvb-t/fr-Lille-Bouvigny | 26
+ b/util/scan/dvb-t/fr-Rochefort-sur-mer | 14
+ b/util/scan/dvb-t/hr-All | 30
+ b/util/scan/dvb-t/hu-Budapest | 8
+ b/util/scan/dvb-t/hu-Debrecen | 8
+ b/util/scan/dvb-t/hu-Gyor | 8
+ b/util/scan/dvb-t/hu-Kabhegy | 8
+ b/util/scan/dvb-t/hu-Kekes | 8
+ b/util/scan/dvb-t/hu-Kiskoros | 8
+ b/util/scan/dvb-t/hu-Nagykanizsa-Ujudvar | 8
+ b/util/scan/dvb-t/hu-Pecs | 8
+ b/util/scan/dvb-t/hu-Szeged | 8
+ b/util/scan/dvb-t/hu-Szentes | 8
+ b/util/scan/dvb-t/hu-Tokaj | 8
+ b/util/scan/dvb-t/hu-Uzd | 8
+ b/util/scan/dvb-t/hu-Vasvar-Hegyhatsal | 8
+ b/util/scan/dvb-t/il-All | 5
+ b/util/scan/dvb-t/ir-Tehran | 4
+ b/util/scan/dvb-t/it-Montevergine | 18
+ b/util/scan/dvb-t/lt-All | 39
+ b/util/scan/dvb-t/ro-Bucharest | 5
+ b/util/scan/dvb-t/si-Ljubljana | 5
+ b/util/scan/dvb-t/sk-Bardejov | 11
+ b/util/scan/dvb-t/sk-Michalovce | 11
+ b/util/scan/dvb-t/sk-Namestovo | 11
+ b/util/scan/dvb-t/sk-Poprad | 11
+ b/util/scan/dvb-t/sk-RimavskaSobota | 11
+ b/util/scan/dvb-t/sk-Trencin | 12
+ b/util/scan/dvb-t/sk-VelkyKrtis | 11
+ b/util/scan/dvb-t/sk-Zilina | 11
+ b/util/scan/dvb-t/vn-Thaibinh | 5
+ b/util/szap/util.c | 126
+ b/util/szap/util.h | 24
+ lib/libdvben50221/en50221_stdcam_llci.c | 19
+ lib/libdvbsec/dvbsec_api.c | 17
+ test/Makefile | 1
+ test/README | 2
+ test/test_video.c | 53
+ util/Makefile | 1
+ util/femon/femon.c | 57
+ util/scan/dvb-c/at-KarrerNet | 18
+ util/scan/dvb-c/de-Primacom | 5
+ util/scan/dvb-c/de-Unitymedia | 17
+ util/scan/dvb-c/fi-Turku | 8
+ util/scan/dvb-c/se-comhem | 22
+ util/scan/dvb-s/AsiaSat3S_C-105.5E | 164
+ util/scan/dvb-t/au-Adelaide | 2
+ util/scan/dvb-t/au-Brisbane | 2
+ util/scan/dvb-t/au-SunshineCoast | 2
+ util/scan/dvb-t/ch-All | 1
+ util/scan/dvb-t/de-Baden-Wuerttemberg | 23
+ util/scan/dvb-t/de-Bayern | 56
+ util/scan/dvb-t/de-Berlin | 13
+ util/scan/dvb-t/de-Brandenburg | 4
+ util/scan/dvb-t/de-Bremen | 8
+ util/scan/dvb-t/de-Hamburg | 20
+ util/scan/dvb-t/de-Hessen | 26
+ util/scan/dvb-t/de-Mecklenburg-Vorpommern | 10
+ util/scan/dvb-t/de-Niedersachsen | 33
+ util/scan/dvb-t/de-Nordrhein-Westfalen | 16
+ util/scan/dvb-t/de-Rheinland-Pfalz | 10
+ util/scan/dvb-t/de-Saarland | 6
+ util/scan/dvb-t/de-Sachsen | 14
+ util/scan/dvb-t/de-Sachsen-Anhalt | 8
+ util/scan/dvb-t/de-Schleswig-Holstein | 26
+ util/scan/dvb-t/de-Thueringen | 8
+ util/scan/dvb-t/dk-All | 16
+ util/scan/dvb-t/es-Albacete | 20
+ util/scan/dvb-t/es-Alfabia | 3
+ util/scan/dvb-t/es-Collserola | 16
+ util/scan/dvb-t/es-Las_Palmas | 22
+ util/scan/dvb-t/es-Sevilla | 17
+ util/scan/dvb-t/fr-Boulogne | 17
+ util/scan/dvb-t/fr-Brest | 10
+ util/scan/dvb-t/fr-Chambery | 42
+ util/scan/dvb-t/fr-Laval | 12
+ util/scan/dvb-t/fr-Montbeliard | 28
+ util/scan/dvb-t/fr-Nantes | 13
+ util/scan/dvb-t/fr-Poitiers | 12
+ util/scan/dvb-t/fr-Reims | 18
+ util/scan/dvb-t/fr-Tours | 32
+ util/scan/dvb-t/gr-Athens | 2
+ util/scan/dvb-t/is-Reykjavik | 42
+ util/scan/dvb-t/it-Milano | 38
+ util/scan/dvb-t/se-Horby_Sallerup | 2
+ util/scan/dvb-t/se-Ornskoldsvik_As | 1
+ util/scan/dvb-t/se-Skelleftea | 1
+ util/scan/dvb-t/sk-BanskaBystrica | 9
+ util/scan/dvb-t/sk-Bratislava | 9
+ util/scan/dvb-t/sk-Kosice | 9
+ util/scan/dvb-t/uk-Aberdare | 17
+ util/scan/dvb-t/uk-Redruth | 13
+ util/scan/dvb-t/uk-StocklandHill | 15
+ util/scan/dvb-t/uk-Storeton | 15
+ util/scan/dvb-t/uk-WinterHill | 18
+ util/scan/scan.c | 11
+ util/szap/Makefile | 2
+ util/szap/azap.c | 27
+ util/szap/czap.c | 91
+ util/szap/szap.c | 97
+ util/szap/tzap.c | 73
+ 232 files changed, 34875 insertions(+), 778 deletions(-)
+diff -r af23d23c278b Make.rules
+--- a/Make.rules Sat Jun 20 16:47:55 2009 +0200
++++ b/Make.rules Tue Dec 21 12:13:28 2010 +0100
+@@ -35,7 +35,7 @@
+ sharedir ?= $(prefix)/share
+
+ ifneq ($(DESTDIR),)
+-DESTDIR = $(DESTDIR)/
++DESTDIR := $(DESTDIR)/
+ endif
+
+ ifeq ($(V),1)
+diff -r af23d23c278b README
+--- a/README Sat Jun 20 16:47:55 2009 +0200
++++ b/README Tue Dec 21 12:13:28 2010 +0100
+@@ -15,6 +15,8 @@
+ util/dvbtraffic - Monitor traffic on a digital device.
+ util/femon - Monitor the tuning on a digital TV device.
+ util/zap - *Just* tunes a digital device - really intended for developers.
++util/gotox - Simple Rotor control utility
++util/alevt - Teletext capture and display utility
+
+ Hardware Specific Utilities:
+ util/av7110_loadkeys - Load remote keys into an av7110 based card
+@@ -36,5 +38,10 @@
+ files as they are contained in the linuxtv-dvb-1.? release
+ and the 2.6.x Linux kernel.
+
++AleVT is not compiled by the main Makefile, because it depends on external
++libraries which might not be available in your system (see util/alevt/README for
++details). If you have the required libraries, to compile AleVT go to util/alevt/
++and type "make".
++
+ Johannes Stezenbach <js@convergence.de>
+ Andrew de Quincey <adq_dvb@lidskialf.net>
+diff -r af23d23c278b lib/libdvben50221/en50221_stdcam_llci.c
+--- a/lib/libdvben50221/en50221_stdcam_llci.c Sat Jun 20 16:47:55 2009 +0200
++++ b/lib/libdvben50221/en50221_stdcam_llci.c Tue Dec 21 12:13:28 2010 +0100
+@@ -374,14 +374,21 @@
+ } else if (resource_id == EN50221_APP_MMI_RESOURCEID) {
+ llci->stdcam.mmi_session_number = session_number;
+ }
++ break;
+
++ case S_SCALLBACK_REASON_CLOSE:
++ if (resource_id == EN50221_APP_MMI_RESOURCEID) {
++ llci->stdcam.mmi_session_number = -1;
++ } else if (resource_id == EN50221_APP_DATETIME_RESOURCEID) {
++ llci->datetime_session_number = -1;
++ } else if (resource_id == EN50221_APP_AI_RESOURCEID) {
++ llci->stdcam.ai_session_number = -1;
++ } else if (resource_id == EN50221_APP_CA_RESOURCEID) {
++ llci->stdcam.ca_session_number = -1;
++ } else if (resource_id == EN50221_APP_MMI_RESOURCEID) {
++ llci->stdcam.mmi_session_number = -1;
++ }
+ break;
+- case S_SCALLBACK_REASON_CLOSE:
+- if (resource_id == EN50221_APP_MMI_RESOURCEID) {
+- llci->stdcam.mmi_session_number = -1;
+- }
+-
+- break;
+ }
+ return 0;
+ }
+diff -r af23d23c278b lib/libdvbsec/dvbsec_api.c
+--- a/lib/libdvbsec/dvbsec_api.c Sat Jun 20 16:47:55 2009 +0200
++++ b/lib/libdvbsec/dvbsec_api.c Tue Dec 21 12:13:28 2010 +0100
+@@ -537,19 +537,12 @@
+ }
+
+ // generate the command
+- if (integer < -256) {
+- return -EINVAL;
+- } else if (integer < 0) {
+- integer = -integer;
+- data[3] = 0xf0;
+- } else if (integer < 256) {
+- data[3] = 0x00;
+- } else if (integer < 512) {
+- integer -= 256;
+- data[3] = 0x10;
+- } else {
+- return -EINVAL;
++ if (integer < 0.0) {
++ data[3] = 0xD0; // West is a negative angle value
++ } else if (integer >= 0.0) {
++ data[3] = 0xE0; // East is a positive angle value
+ }
++ integer = abs(integer);
+ data[3] |= ((integer / 16) & 0x0f);
+ integer = integer % 16;
+ data[4] |= ((integer & 0x0f) << 4) | fraction;
+diff -r af23d23c278b test/Makefile
+--- a/test/Makefile Sat Jun 20 16:47:55 2009 +0200
++++ b/test/Makefile Tue Dec 21 12:13:28 2010 +0100
+@@ -18,6 +18,7 @@
+ test_stillimage \
+ test_tt \
+ test_vevent \
++ test_video \
+ evtest \
+ video \
+ szap2
+diff -r af23d23c278b test/README
+--- a/test/README Sat Jun 20 16:47:55 2009 +0200
++++ b/test/README Tue Dec 21 12:13:28 2010 +0100
+@@ -47,4 +47,4 @@
+ test_dvr :
+ test_front :
+ test_switch :
+-test_video :
++test_video : Play video-only file on /dev/dvb/adapter0/video0
+diff -r af23d23c278b test/test_video.c
+--- a/test/test_video.c Sat Jun 20 16:47:55 2009 +0200
++++ b/test/test_video.c Tue Dec 21 12:13:28 2010 +0100
+@@ -23,6 +23,7 @@
+
+ #include <sys/ioctl.h>
+ #include <stdio.h>
++#include <stdlib.h>
+ #include <stdint.h>
+ #include <sys/types.h>
+ #include <sys/stat.h>
+@@ -31,8 +32,7 @@
+ #include <unistd.h>
+
+ #include <linux/dvb/dmx.h>
+-#include <linux/dvb/frontend_old.h>
+-#include <linux/dvb/sec.h>
++#include <linux/dvb/frontend.h>
+ #include <linux/dvb/video.h>
+ #include <sys/poll.h>
+
+@@ -100,7 +100,7 @@
+
+
+
+-int videoSetBlank(int fd, boolean state)
++int videoSetBlank(int fd, int state)
+ {
+ int ans;
+
+@@ -138,72 +138,72 @@
+
+ int videoGetStatus(int fd)
+ {
+- struct video_status stat;
++ struct video_status vstat;
+ int ans;
+
+- if ((ans = ioctl(fd,VIDEO_GET_STATUS, &stat)) < 0) {
++ if ((ans = ioctl(fd,VIDEO_GET_STATUS, &vstat)) < 0) {
+ perror("VIDEO GET STATUS: ");
+ return -1;
+ }
+
+ printf("Video Status:\n");
+ printf(" Blank State : %s\n",
+- (stat.video_blank ? "BLANK" : "STILL"));
++ (vstat.video_blank ? "BLANK" : "STILL"));
+ printf(" Play State : ");
+- switch ((int)stat.play_state){
++ switch ((int)vstat.play_state){
+ case VIDEO_STOPPED:
+- printf("STOPPED (%d)\n",stat.play_state);
++ printf("STOPPED (%d)\n",vstat.play_state);
+ break;
+ case VIDEO_PLAYING:
+- printf("PLAYING (%d)\n",stat.play_state);
++ printf("PLAYING (%d)\n",vstat.play_state);
+ break;
+ case VIDEO_FREEZED:
+- printf("FREEZED (%d)\n",stat.play_state);
++ printf("FREEZED (%d)\n",vstat.play_state);
+ break;
+ default:
+- printf("unknown (%d)\n",stat.play_state);
++ printf("unknown (%d)\n",vstat.play_state);
+ break;
+ }
+
+ printf(" Stream Source : ");
+- switch((int)stat.stream_source){
++ switch((int)vstat.stream_source){
+ case VIDEO_SOURCE_DEMUX:
+- printf("DEMUX (%d)\n",stat.stream_source);
++ printf("DEMUX (%d)\n",vstat.stream_source);
+ break;
+ case VIDEO_SOURCE_MEMORY:
+- printf("MEMORY (%d)\n",stat.stream_source);
++ printf("MEMORY (%d)\n",vstat.stream_source);
+ break;
+ default:
+- printf("unknown (%d)\n",stat.stream_source);
++ printf("unknown (%d)\n",vstat.stream_source);
+ break;
+ }
+
+ printf(" Format (Aspect Ratio): ");
+- switch((int)stat.video_format){
++ switch((int)vstat.video_format){
+ case VIDEO_FORMAT_4_3:
+- printf("4:3 (%d)\n",stat.video_format);
++ printf("4:3 (%d)\n",vstat.video_format);
+ break;
+ case VIDEO_FORMAT_16_9:
+- printf("16:9 (%d)\n",stat.video_format);
++ printf("16:9 (%d)\n",vstat.video_format);
+ break;
+ default:
+- printf("unknown (%d)\n",stat.video_format);
++ printf("unknown (%d)\n",vstat.video_format);
+ break;
+ }
+
+ printf(" Display Format : ");
+- switch((int)stat.display_format){
++ switch((int)vstat.display_format){
+ case VIDEO_PAN_SCAN:
+- printf("Pan&Scan (%d)\n",stat.display_format);
++ printf("Pan&Scan (%d)\n",vstat.display_format);
+ break;
+ case VIDEO_LETTER_BOX:
+- printf("Letterbox (%d)\n",stat.display_format);
++ printf("Letterbox (%d)\n",vstat.display_format);
+ break;
+ case VIDEO_CENTER_CUT_OUT:
+- printf("Center cutout (%d)\n",stat.display_format);
++ printf("Center cutout (%d)\n",vstat.display_format);
+ break;
+ default:
+- printf("unknown (%d)\n",stat.display_format);
++ printf("unknown (%d)\n",vstat.display_format);
+ break;
+ }
+ return 0;
+@@ -230,7 +230,6 @@
+ int written;
+ struct pollfd pfd[NFD];
+ int stopped = 0;
+- int ch;
+
+ pfd[0].fd = STDIN_FILENO;
+ pfd[0].events = POLLIN;
+@@ -327,7 +326,7 @@
+ videoPlay(fd);
+ }
+
+-main(int argc, char **argv)
++int main(int argc, char **argv)
+ {
+ int fd;
+ int filefd;
+@@ -338,7 +337,7 @@
+ perror("File open:");
+ return -1;
+ }
+- if ((fd = open("/dev/ost/video1",O_RDWR|O_NONBLOCK)) < 0){
++ if ((fd = open("/dev/dvb/adapter0/video0",O_RDWR|O_NONBLOCK)) < 0){
+ perror("VIDEO DEVICE: ");
+ return -1;
+ }
+diff -r af23d23c278b util/Makefile
+--- a/util/Makefile Sat Jun 20 16:47:55 2009 +0200
++++ b/util/Makefile Tue Dec 21 12:13:28 2010 +0100
+@@ -16,4 +16,5 @@
+ $(MAKE) -C szap $@
+ $(MAKE) -C ttusb_dec_reset $@
+ $(MAKE) -C gnutv $@
++ $(MAKE) -C gotox $@
+ $(MAKE) -C zap $@
+diff -r af23d23c278b util/alevt/COPYRIGHT
+--- /dev/null Thu Jan 01 00:00:00 1970 +0000
++++ b/util/alevt/COPYRIGHT Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,297 @@
++This message applies to all files within the archive:
++
++ Copyright (C) 1998,1999,2000 Edgar Toernig (froese@gmx.de)
++ All rights reserved.
++
++ This program is free software; you can redistribute it and/or modify
++ it under the terms of the GNU General Public License Version 2 as
++ published by the Free Software Foundation.
++
++ This program is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++ GNU General Public License for more details.
++
++
++And here's the GNU GPL V2:
++
++ GNU GENERAL PUBLIC LICENSE
++ Version 2, June 1991
++
++ Copyright (C) 1989, 1991 Free Software Foundation, Inc.
++ 675 Mass Ave, Cambridge, MA 02139, USA
++ Everyone is permitted to copy and distribute verbatim copies
++ of this license document, but changing it is not allowed.
++
++ Preamble
++
++ The licenses for most software are designed to take away your
++freedom to share and change it. By contrast, the GNU General Public
++License is intended to guarantee your freedom to share and change free
++software--to make sure the software is free for all its users. This
++General Public License applies to most of the Free Software
++Foundation's software and to any other program whose authors commit to
++using it. (Some other Free Software Foundation software is covered by
++the GNU Library General Public License instead.) You can apply it to
++your programs, too.
++
++ When we speak of free software, we are referring to freedom, not
++price. Our General Public Licenses are designed to make sure that you
++have the freedom to distribute copies of free software (and charge for
++this service if you wish), that you receive source code or can get it
++if you want it, that you can change the software or use pieces of it
++in new free programs; and that you know you can do these things.
++
++ To protect your rights, we need to make restrictions that forbid
++anyone to deny you these rights or to ask you to surrender the rights.
++These restrictions translate to certain responsibilities for you if you
++distribute copies of the software, or if you modify it.
++
++ For example, if you distribute copies of such a program, whether
++gratis or for a fee, you must give the recipients all the rights that
++you have. You must make sure that they, too, receive or can get the
++source code. And you must show them these terms so they know their
++rights.
++
++ We protect your rights with two steps: (1) copyright the software, and
++(2) offer you this license which gives you legal permission to copy,
++distribute and/or modify the software.
++
++ Also, for each author's protection and ours, we want to make certain
++that everyone understands that there is no warranty for this free
++software. If the software is modified by someone else and passed on, we
++want its recipients to know that what they have is not the original, so
++that any problems introduced by others will not reflect on the original
++authors' reputations.
++
++ Finally, any free program is threatened constantly by software
++patents. We wish to avoid the danger that redistributors of a free
++program will individually obtain patent licenses, in effect making the
++program proprietary. To prevent this, we have made it clear that any
++patent must be licensed for everyone's free use or not licensed at all.
++
++ The precise terms and conditions for copying, distribution and
++modification follow.
++
++ GNU GENERAL PUBLIC LICENSE
++ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
++
++ 0. This License applies to any program or other work which contains
++a notice placed by the copyright holder saying it may be distributed
++under the terms of this General Public License. The "Program", below,
++refers to any such program or work, and a "work based on the Program"
++means either the Program or any derivative work under copyright law:
++that is to say, a work containing the Program or a portion of it,
++either verbatim or with modifications and/or translated into another
++language. (Hereinafter, translation is included without limitation in
++the term "modification".) Each licensee is addressed as "you".
++
++Activities other than copying, distribution and modification are not
++covered by this License; they are outside its scope. The act of
++running the Program is not restricted, and the output from the Program
++is covered only if its contents constitute a work based on the
++Program (independent of having been made by running the Program).
++Whether that is true depends on what the Program does.
++
++ 1. You may copy and distribute verbatim copies of the Program's
++source code as you receive it, in any medium, provided that you
++conspicuously and appropriately publish on each copy an appropriate
++copyright notice and disclaimer of warranty; keep intact all the
++notices that refer to this License and to the absence of any warranty;
++and give any other recipients of the Program a copy of this License
++along with the Program.
++
++You may charge a fee for the physical act of transferring a copy, and
++you may at your option offer warranty protection in exchange for a fee.
++
++ 2. You may modify your copy or copies of the Program or any portion
++of it, thus forming a work based on the Program, and copy and
++distribute such modifications or work under the terms of Section 1
++above, provided that you also meet all of these conditions:
++
++ a) You must cause the modified files to carry prominent notices
++ stating that you changed the files and the date of any change.
++
++ b) You must cause any work that you distribute or publish, that in
++ whole or in part contains or is derived from the Program or any
++ part thereof, to be licensed as a whole at no charge to all third
++ parties under the terms of this License.
++
++ c) If the modified program normally reads commands interactively
++ when run, you must cause it, when started running for such
++ interactive use in the most ordinary way, to print or display an
++ announcement including an appropriate copyright notice and a
++ notice that there is no warranty (or else, saying that you provide
++ a warranty) and that users may redistribute the program under
++ these conditions, and telling the user how to view a copy of this
++ License. (Exception: if the Program itself is interactive but
++ does not normally print such an announcement, your work based on
++ the Program is not required to print an announcement.)
++
++These requirements apply to the modified work as a whole. If
++identifiable sections of that work are not derived from the Program,
++and can be reasonably considered independent and separate works in
++themselves, then this License, and its terms, do not apply to those
++sections when you distribute them as separate works. But when you
++distribute the same sections as part of a whole which is a work based
++on the Program, the distribution of the whole must be on the terms of
++this License, whose permissions for other licensees extend to the
++entire whole, and thus to each and every part regardless of who wrote it.
++
++Thus, it is not the intent of this section to claim rights or contest
++your rights to work written entirely by you; rather, the intent is to
++exercise the right to control the distribution of derivative or
++collective works based on the Program.
++
++In addition, mere aggregation of another work not based on the Program
++with the Program (or with a work based on the Program) on a volume of
++a storage or distribution medium does not bring the other work under
++the scope of this License.
++
++ 3. You may copy and distribute the Program (or a work based on it,
++under Section 2) in object code or executable form under the terms of
++Sections 1 and 2 above provided that you also do one of the following:
++
++ a) Accompany it with the complete corresponding machine-readable
++ source code, which must be distributed under the terms of Sections
++ 1 and 2 above on a medium customarily used for software interchange; or,
++
++ b) Accompany it with a written offer, valid for at least three
++ years, to give any third party, for a charge no more than your
++ cost of physically performing source distribution, a complete
++ machine-readable copy of the corresponding source code, to be
++ distributed under the terms of Sections 1 and 2 above on a medium
++ customarily used for software interchange; or,
++
++ c) Accompany it with the information you received as to the offer
++ to distribute corresponding source code. (This alternative is
++ allowed only for noncommercial distribution and only if you
++ received the program in object code or executable form with such
++ an offer, in accord with Subsection b above.)
++
++The source code for a work means the preferred form of the work for
++making modifications to it. For an executable work, complete source
++code means all the source code for all modules it contains, plus any
++associated interface definition files, plus the scripts used to
++control compilation and installation of the executable. However, as a
++special exception, the source code distributed need not include
++anything that is normally distributed (in either source or binary
++form) with the major components (compiler, kernel, and so on) of the
++operating system on which the executable runs, unless that component
++itself accompanies the executable.
++
++If distribution of executable or object code is made by offering
++access to copy from a designated place, then offering equivalent
++access to copy the source code from the same place counts as
++distribution of the source code, even though third parties are not
++compelled to copy the source along with the object code.
++
++ 4. You may not copy, modify, sublicense, or distribute the Program
++except as expressly provided under this License. Any attempt
++otherwise to copy, modify, sublicense or distribute the Program is
++void, and will automatically terminate your rights under this License.
++However, parties who have received copies, or rights, from you under
++this License will not have their licenses terminated so long as such
++parties remain in full compliance.
++
++ 5. You are not required to accept this License, since you have not
++signed it. However, nothing else grants you permission to modify or
++distribute the Program or its derivative works. These actions are
++prohibited by law if you do not accept this License. Therefore, by
++modifying or distributing the Program (or any work based on the
++Program), you indicate your acceptance of this License to do so, and
++all its terms and conditions for copying, distributing or modifying
++the Program or works based on it.
++
++ 6. Each time you redistribute the Program (or any work based on the
++Program), the recipient automatically receives a license from the
++original licensor to copy, distribute or modify the Program subject to
++these terms and conditions. You may not impose any further
++restrictions on the recipients' exercise of the rights granted herein.
++You are not responsible for enforcing compliance by third parties to
++this License.
++
++ 7. If, as a consequence of a court judgment or allegation of patent
++infringement or for any other reason (not limited to patent issues),
++conditions are imposed on you (whether by court order, agreement or
++otherwise) that contradict the conditions of this License, they do not
++excuse you from the conditions of this License. If you cannot
++distribute so as to satisfy simultaneously your obligations under this
++License and any other pertinent obligations, then as a consequence you
++may not distribute the Program at all. For example, if a patent
++license would not permit royalty-free redistribution of the Program by
++all those who receive copies directly or indirectly through you, then
++the only way you could satisfy both it and this License would be to
++refrain entirely from distribution of the Program.
++
++If any portion of this section is held invalid or unenforceable under
++any particular circumstance, the balance of the section is intended to
++apply and the section as a whole is intended to apply in other
++circumstances.
++
++It is not the purpose of this section to induce you to infringe any
++patents or other property right claims or to contest validity of any
++such claims; this section has the sole purpose of protecting the
++integrity of the free software distribution system, which is
++implemented by public license practices. Many people have made
++generous contributions to the wide range of software distributed
++through that system in reliance on consistent application of that
++system; it is up to the author/donor to decide if he or she is willing
++to distribute software through any other system and a licensee cannot
++impose that choice.
++
++This section is intended to make thoroughly clear what is believed to
++be a consequence of the rest of this License.
++
++ 8. If the distribution and/or use of the Program is restricted in
++certain countries either by patents or by copyrighted interfaces, the
++original copyright holder who places the Program under this License
++may add an explicit geographical distribution limitation excluding
++those countries, so that distribution is permitted only in or among
++countries not thus excluded. In such case, this License incorporates
++the limitation as if written in the body of this License.
++
++ 9. The Free Software Foundation may publish revised and/or new versions
++of the General Public License from time to time. Such new versions will
++be similar in spirit to the present version, but may differ in detail to
++address new problems or concerns.
++
++Each version is given a distinguishing version number. If the Program
++specifies a version number of this License which applies to it and "any
++later version", you have the option of following the terms and conditions
++either of that version or of any later version published by the Free
++Software Foundation. If the Program does not specify a version number of
++this License, you may choose any version ever published by the Free Software
++Foundation.
++
++ 10. If you wish to incorporate parts of the Program into other free
++programs whose distribution conditions are different, write to the author
++to ask for permission. For software which is copyrighted by the Free
++Software Foundation, write to the Free Software Foundation; we sometimes
++make exceptions for this. Our decision will be guided by the two goals
++of preserving the free status of all derivatives of our free software and
++of promoting the sharing and reuse of software generally.
++
++ NO WARRANTY
++
++ 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
++FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
++OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
++PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
++OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
++MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
++TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
++PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
++REPAIR OR CORRECTION.
++
++ 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
++WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
++REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
++INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
++OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
++TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
++YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
++PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
++POSSIBILITY OF SUCH DAMAGES.
++
++ END OF TERMS AND CONDITIONS
+diff -r af23d23c278b util/alevt/ChangeLog
+--- /dev/null Thu Jan 01 00:00:00 1970 +0000
++++ b/util/alevt/ChangeLog Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,535 @@
++Thu Feb 11 22:05:00 MET 2010 (1.7.0)
++
++ - redesigned version:
++ - outfile, new starting methods, libzvbi implementation
++ - lots of bug fixes, all patches available in the Internet applied
++ - extensive code cleanup
++
++Mon Dec 3 03:11:07 MET 2007 (1.6.2)
++
++ - compilation fixes for newer gcc
++ - makefile tweaks (man vs share/man, /usr/X11R6 vs /usr, etc)
++ - default device changed to /dev/vbi0
++ - adapt to current v4l2 api
++ - some minor fixes collected during the past years
++
++ This is a build-time update to conform to newer compilers and
++ system environments. If you have a running AleVT there's no
++ reason to update. The only real fix is in the html-exporter
++ which was producing broken html (missing double-quotes).
++
++Thu Jan 23 01:53:10 MET 2003
++
++ - Fixed a bug in contrib/cap-all.c (fdset_init before vbi_open)
++ - Expaned cap-all.c to show how to save in two formats simultaneously.
++
++Tue Aug 20 05:22:16 MEST 2002 (1.6.1)
++
++ - Removed the bttv-warning from the help pages ;-)
++
++Mon Jul 23 18:34:32 MEST 2001
++
++ - Fixed bug in ui.c - found by <pawel@sakowski.eu.org>.
++ - When clicking on page numbers accept sub-page numbers too.
++
++Sat Dec 23 15:12:11 MET 2000
++
++ - Fixed 'double height last line' bug in export.c reported by
++ <Matthias.Kleinmann@urz.uni-heidelberg.de>
++
++Thu Oct 12 02:19:31 MEST 2000
++
++ - The &nbsp; fix was wrong. Removed it.
++
++Wed Oct 11 19:41:38 MEST 2000 (1.6.0)
++
++ - Some documentation tweaks.
++ - Release. Made it 1.6 because of V4l2 API.
++
++Thu Sep 21 21:07:12 MEST 2000
++
++ - Removed old bttv-only decoder. Only the v4l2-based stays.
++ If the device does not support v4l2, default parameters
++ appropriate for the bttv-driver are taken.
++ - Subpage cycling (up/down and 2nd wheel) stays in the current
++ page.
++
++Sat Sep 16 23:52:12 MEST 2000
++
++ - Experimental v4l2 interface added.
++ - Finetune defaults to 1 now. Works best for me. Tell me
++ if you don't like it.
++ - Russian patch still not added :-/
++ - Fixed the bug in xio.c that Ben Smithurst
++ <ben@scientia.demon.co.uk> found.
++ - Added the dual-wheel-mouse patch from Holger Fitzner.
++
++Tue May 30 03:09:24 MEST 2000
++
++ - As Matto Fransen <matto@matto.nl> reported: the ; after &nbsp
++ in exp-html is missing. fixed that.
++
++Tue May 9 20:21:52 MEST 2000
++
++ - Removed the -oldbttv/-newbttv options. If your driver has
++ a buffer size different from that in the current bttv you
++ either have to support the VBISIZE ioctl or change the source.
++ (Tried to implement an autodetect by non-blocking reads but
++ that confuses the driver that much that it no longers gives
++ reasonable data.)
++ - Added a compression option to the png export filter and
++ changed the default compression level to the lib's default.
++ The prev default of 9 was way to slow.
++
++Wed May 3 19:18:55 MEST 2000
++
++ - Added a smaller font. Made out of the neep9 font from
++ the really great jmk-fonts (http://www.pobox.com/~jmknoble).
++
++Sat Apr 29 02:36:41 MEST 2000
++
++ - Fixed SEGV in export.c:adjust.
++ - Fixed a possible buffer overrun in exp-txt.c
++
++Thu Nov 4 21:18:52 MET 1999 (1.5.1)
++
++ - Added os.h. That way alevt compiles right out of the
++ box on all BSD systems (I hope *g*).
++ - Fixed the DST bug in alevt-date.
++ - Put vtwiz.pl in contrib, a perl/tk/set-tv script to
++ launch alevt written by Joern Borgert.
++
++Tue Oct 26 23:55:09 MEST 1999 (1.5.1-pre1)
++
++ - Added timeout option to alevt-cap.
++ - Use install instead of cp in the Makefile.
++ - Added -I/usr/local/include and -L/usr/local/lib
++ in the Makefile.
++ - Changed #ifdef FREEBSD to #ifdef BSD.
++ - exchanged contrib/paul-export.patch with
++ paul.fmt_page.c (a replacement for export.c:fmt_page())
++ and paul.fmt_page.patch (the same in form of a
++ patch file).
++ - Some doc corrections.
++
++Thu Oct 14 02:49:48 MEST 1999
++
++ - Added FREEBSD patches.
++
++Fri Oct 8 23:36:45 MEST 1999 (1.5.0)
++
++ - Updated the documentation.
++
++ So, what's new since 1.4.9 (nearly 4 months ago)?
++ Two major things: full latin-2 support and export
++ filters for alevt-cap and alevt itself.
++
++ For the latin-2 support page enhancement packets
++ have to be decoded and some latin-1 pages may
++ benefit from that, too. Note: if you select
++ latin-2 everything is latin-2, even cut'n paste.
++ (new cmdline option -charset latin-1|2)
++
++ The export filters allow saving pages in different
++ formats. At the moment there's ascii (with and with-
++ out color), html, png, and ppm. The png filter
++ requires libpng. If you don't have it (or don't want
++ png support) just remove the WITH_PNG from the
++ Makefile. To save the currently displayed page just
++ press 's'. See alevt-cap(1) for the format string.
++
++ Preview: 1.5.1 will have the FreeBSD patches and
++ any bug fixes. (But not more *g*).
++
++Fri Oct 8 02:06:35 MEST 1999 (1.5.0-pre4)
++
++ Finally I could get away from my Playstation and
++ work a little bit on alevt *g*
++
++ - Tried to change alevt-date with freebsd patches from
++ Thomas Runge <runge@rostock.zgdv.de>. They do not
++ have the timezone and daylight variables. But I do
++ not have tm_gmtoff. So it's commented out for the
++ moment.
++ - Made font.[ch] so that only one copy of the fonts is
++ in the executable when including export modules
++ (exp-gfx.c uses them). Had to tweak the makefile.
++ - Added 's' for saving pages to files. Prompts for
++ a format string and a filename and saves the
++ currently displayed page.
++ (Formerly, 's' and 'S' were aliases for '/' and '?'
++ (searching))
++ - Found a bug in export.c regarding double height lines.
++ - Added a patch to the contrib dir to pass the URL you
++ click on to netscape.
++
++ The documentation updates are still missing. That's
++ the last thing to do for 1.5.0. But that's so boring...
++
++Fri Aug 20 21:28:18 MEST 1999
++
++ Back from holidays and time for alevt...
++
++ - Added html, png, and ppm export modules from Paul.
++ - Fixed the return status for export_output.
++ - Tweaked the makefile for libpng support.
++ - Added the export howto to the contrib dir.
++ - Added Paul's fmt_page routine to contrib as a patch
++ to export.c
++ - Added "-format help" to list all output formats and
++ its options.
++
++ Still to do: update man page of alevt-cap, add export
++ to alevt, add erc to alevt-cap.
++
++ Oh, btw, alevt is running on FreeBSD with the bt848
++ driver from Roger Hardiman <roger@cs.strath.ac.uk> *g*.
++ I wonder if it's possible to port his driver to linux.
++ Maybe it runs better then bttv... (I still get reports
++ with stuck xawtvs ...)
++
++Mon Jul 19 01:15:50 MEST 1999 (1.5.0-pre3)
++
++ - Added export modules. It's gotten much to complex.
++
++ A lot of things still to do: add other formats [Paul?],
++ add documentation, add format-help, add export to alevt,
++ add erc to alevt-cap, ...
++
++Mon Jul 12 00:09:03 MEST 1999
++
++ - Added an incomplete 20x24 font to the contrib dir.
++
++Tue Jun 29 00:46:03 MEST 1999 (1.5.0-pre2)
++
++ - Added lanugage tables from Radoslaw.
++ - Added new latin-2 font from Radoslaw.
++ - Fixed a bug with hold graphics. There's still one bug
++ on CNN's page 100 (has to do with set-after behaviour of
++ color select in hold graphics mode). The last line of the
++ earth should be blue-blue-green not blue-green-green.
++ AleVT always uses set-at behaviour. Afaik, this combination
++ (hold + set-after) is the only way to see the difference
++ between set-at and set-after. Set-after will blow up the
++ code so I will leave it as it is.
++ - vbi now collects all pkt26 and enhances the page before
++ it is passed on. Seem's to work.
++
++Tue Jun 22 22:13:45 MEST 1999 (1.5.0-pre1)
++
++ - Fixed hamm24. And, it should be fast now *g*
++ - Moved the language conversion parts to lang.c
++ - Added additional lang_chars for use with the latin-2 charset.
++ - Added -charset latin-1/2 option.
++ - Added pkt x/26 decoding. ... and noticed, that these packets
++ are sent between line 0 and 1. FUCK. Now I have to save
++ all x/26 until the page is complete. But not today... :-(
++
++ Things are getting more and more uglier. The right thing
++ to do would be to make a big font with all possible chars
++ (including cyrillic, arabic, smoothed graphics, ...).
++ That would mean to make each char in vtp->data 16 bit.
++ And then add an attribute word for each char so that the
++ enhanced attributes work, too. Searching and cut & paste
++ would be more complicated... but the worst, the pages
++ will be much bigger (4 times larger). Really bad for
++ the cache and god knows for what else...
++ Is it worth all the trouble??? I don't need that!
++
++Tue Jun 15 01:25:40 MEST 1999
++
++ - Changed .specs file again. I previously changed alevt.spec
++ instead of alevt.spec.in :-(
++
++Mon Jun 14 23:45:48 MEST 1999 (1.4.9)
++
++ - Made a very simple capture program (alevt-cap). Just collects
++ the given pages and writes them to disk in ASCII.
++ I will only accept bug reports/fixes, no enhancement requests
++ at the moment *g*
++ (I can't believe it; I even wrote a man page...)
++ - Changed the subpage delimiter on the command line from '/' to '.'
++ The old one ('/') is still accepted. (Reason: alevt-cap uses
++ the page number as part of the filename and a / is inconvenient.
++ And I already wanted to let you enter subpages with the keypad
++ and the '.' would be a nice key for that.)
++ - Tweaked the .specs file... (Btw, alevt-date and alevt-cap should
++ not be installed in the X11 tree.)
++
++Thu Jun 10 22:13:40 MEST 1999
++
++ - moved the hamming decoding and associated table to hamm.c
++ - played with pkt26 to support polish stations. not finished.
++
++Tue Jun 8 21:00:42 MEST 1999
++
++ - Added -[no]bell option. And the 'b' key.
++ - Replaced all xio_bell calls with appropriate status messages.
++
++Sat Jun 5 00:42:19 MEST 1999 (1.4.8)
++
++ - Shit. Just after the release I found a bug. The header line
++ isn't updated as it should :-( (Just affects parallel mode
++ transmission, so no new version, yet.)
++ - Created mailing list. Either go to http://alevt.listbot.com/
++ or write mail to alevt-subscribe@listbot.com.
++ - Added bttv-patch to the contrib dir for those who don't want
++ to wait for bttv-0.6.5.
++
++Fri Jun 4 17:19:41 MEST 1999 (1.4.7)
++
++ - Added autodetection of VBIBUF_SIZE (only with newer bttv, 0.6.5).
++ - Forgot to close vbi_fd in vbi_close :-/
++ - Made ERC on by default. If the page has no errors it
++ costs nothing and if it has you'll turn it on anyway.
++ - Changed parameters of EV_HEADER.
++ - Removed XAWTV_HACKS.
++ - Updated some docu.
++ - Modified the contrib samples to reflect previous API changes.
++
++Fri May 28 20:16:44 MEST 1999
++
++ - Added status messages.
++ - Added EV_TIMER event.
++ - Added channel change detection (only with newer bttv, 0.6.5).
++ Sends EV_RESET event. The XAWTV_HACKS can be removed *phww*.
++ Now the cache is automatically cleared if you switch to a
++ new channel. It even works with a SAT receiver connected to
++ Video-In.
++
++Thu May 27 23:54:32 MEST 1999 (1.4.6 unofficial)
++
++ - Cache reset didn't reset npages and hi_subno.
++ - Added XAWTV_HACKS, that is: alevt scans for a window with
++ the _XAWTV_STATION property and registers for property changes.
++ Result: when switching channels in xawtv, the cache is cleared.
++ (This is just an ugly hack. Xawtv must already be running
++ when alevt is started. If you quit and restart xawtv, it no
++ longer works. There's no method to detect if the monitored
++ xawtv is really the one controlling our /dev/vbi, etc...)
++ Added on request of Paul Ortyl <ortylp@key.net.pl>.
++ - Added error reduction circuit. It's part of the cache.
++ Errors in a new page are replaced by characters/lines from
++ an already cached (older) page. May be toggled by pressing
++ 'e' (editor is now on 'E'). It's not enabled by default
++ because it takes some CPU time. Idea by Paul Ortyl.
++ - TODO: clean up. document new features. add status messages.
++
++Sun May 23 19:13:07 MEST 1999 (1.4.5)
++
++ - New spec file from Karsten Hopp <karsten.hopp@delix.de>
++ - Changed it even further *g*
++ - Fixed a bug with graphics selection of double height lines.
++ - Documented the -oldbttv option in the man page. Now it's in
++ every page. This should finally halve the mails I get.
++ (For the other halve I have to write alevt-capture *g*)
++
++Sat May 8 02:41:21 MEST 1999
++
++ - Ehhh, changed u32 typedef from unsigned long to unsigned int.
++ Same for s32. The Alpha's longs are 64 bits.
++ Thanks to Sdruddin Rejeb <rejeb@dpmail.epfl.ch>.
++ (There's something strange with this in the X libs. They are
++ sometimes very lazy about ints and longs. Someone with an
++ Alpha should check the cut & paste, both, text and graphics
++ selections.)
++
++Thu Apr 29 22:38:37 MEST 1999
++
++ - Updated contrib/t1.c
++ - Added ':' as a subpage delimiter for clicking (2:7 is the same as 2/7)
++
++Mon Apr 19 19:40:09 MEST 1999
++
++ - Switched the scrolling direction of the wheel
++
++Mon Mar 29 01:23:06 MEST 1999 (1.4.4)
++
++ - fixed DST bug in alevt-date
++ - added crude latin-2 support. 'make FONT=latin-2' should be enough.
++ (found the stuff on the website http://www.penguin.cz/~marvin/ of
++ Daniel Smolik <smolikdan@email.cz>. I don't know if he is the one
++ who made the font).
++
++Wed Mar 17 20:53:59 MET 1999
++
++ - added timeout to alevt-date
++
++Fri Feb 19 18:22:53 MET 1999 (1.4.3>
++
++ - Makefile changes.
++
++Fri Jan 29 18:01:27 MET 1999
++
++ - fixed bug in dllist.h. dl_insert_first(h, dl_remove(n)) was only
++ working due to gcc implementation details.
++
++Mon Jan 25 18:33:42 MET 1999 (1.4.2)
++
++ - fixed 'clear cache'. no longer removes the help pages.
++ - made next/prev key/button to skip missing pages.
++ - added support for wheeled mice. (I heard it's really cool *g*)
++ - problem with subpages > 0xff fixed.
++
++Thu Jan 21 17:31:46 MET 1999 (1.4.1)
++
++ - added man pages from Thomas Schoepf <schoepf@usa.net>.
++ - added rpm-spec file from Mario Mikocevic <mozgy@times.hr>.
++ (looks a little bit odd, but I don't know very much about rpms)
++ - minor option fix in alevt-date (people are really using it!?!)
++
++Tue Jan 5 03:50:08 MET 1999 (1.4.0)
++
++ - should be 1.3.10 but that gives problems with the help pages :-(
++ - fixed varargs for alpha
++ - default is now -newbttv (aka -fuckbttv). use -oldbttv for v<0.5.20.
++
++Sat Jan 2 21:40:54 MET 1999
++
++ - small patches to alevt-date (-vbi options and tzset fix)
++ - played with pkt8/30. what a mess. MTV is 25:13 ahead *g*
++
++Wed Dec 30 19:30:14 MET 1998 (1.3.9)
++
++ - slightly modified the pll (may need further tuning)
++
++Wed Dec 30 05:27:26 MET 1998 (1.3.8)
++
++ - added pll (-finetune auto). try -debug for status msgs.
++
++Tue Dec 29 05:15:53 MET 1998 (1.3.7)
++
++ - added finetune option (see README)
++ - you may now type -newbttv instead of -fuckbttv *g*
++
++Mon Dec 28 19:36:32 MET 1998 (1.3.6)
++
++ - Makefile: R5 -> R6 :-(
++ - vbi.c now works without cache.c
++ - added alevt-date (set system time from teletext)
++ - bug in option parsing (error reporting)
++
++Thu Dec 17 19:56:16 MET 1998 (1.3.5)
++
++ - added -L/usr/X11R6/lib in Makefile
++ - put some blurb (in german) in contrib.
++
++Thu Dec 17 05:01:34 MET 1998 (1.3.4)
++
++ - added class hints on (invisible) leader window to make docking
++ in wmaker easier. instant name for leader is "VTLeader" and for
++ the viewing windows "VTPage"
++ - made the icon a little bit smaller
++
++Mon Dec 14 23:05:41 MET 1998 (1.3.3)
++
++ Release 1.3.3
++
++ - added spanish/portuguese charset decoding
++ - added similar looking glyphs for czech
++ - minor changes on the font
++ - middle click on current page number opens new parent window
++ - case dependant search if the pattern begins with a '!'
++ - line editing may be aborted with ^C
++
++Sun Dec 13 17:55:32 MET 1998 (1.3.2)
++
++ - when there were multiple windows of the same page, cycling through
++ the subpages changed all windows. fixed.
++ - hilight the found text (make it the selection).
++ - slightly modified the hilight colors.
++ - default window size set to 41x25 (looks better).
++ - rewrote the editor.
++
++Sun Dec 13 07:03:10 MET 1998 (1.3.1)
++
++ - fixed one command line option
++ - corrected bug in searching
++
++Sat Dec 12 20:27:03 MET 1998 (1.3.0)
++
++ Release 1.3.0
++
++ - searching is now ready (still need a status line for error msgs).
++ - set SIGPIPE to SIG_DFL. some shells (KDE) set it to SIG_IGN and then
++ the timer task won't be killed on exit.
++ - updated the help pages.
++ - I'm frustrated! BTTV_VERSION doesn't work on /dev/vbi. So no
++ autodetection of driver version. Added -fuckbttv option instead.
++
++Fri Dec 11 19:36:03 MET 1998 (1.2.5)
++
++ - reworked national charset (lang) handling. everthing now done in vbi.c.
++ the rest just deals with latin-1.
++ - first version of searching (functional, but dirty. needs more work.)
++
++Thu Dec 10 20:06:27 MET 1998 (1.2.4)
++
++ - new file edline.c (line editor for the menu line. start for searching...)
++ - blinking cursor
++ - added an 48x48 icon from Ulf Rompe
++ - added pasting into the line editor (insert key).
++ - release ownership of XA_PRIMARY when deselecting selection.
++
++Tue Dec 8 21:26:26 MET 1998 (1.2.3)
++
++ - new file ui.c (most user interface stuff from main.c)
++ - rewrote option parsing
++ - allow specification of child windows on command line. now
++ it's possible to regenerate the complete window layout by
++ the commandline (may be of some use for session management).
++ - some spelling fixes in the help pages from Mark Bryars
++
++Mon Dec 7 16:59:28 MET 1998 (1.2.2)
++
++ - reworked hidden handling in xio.c
++
++Sun Dec 6 19:54:10 MET 1998 (1.2.1)
++
++ - class name changed! from Alevt to AleVT.
++ - window/icon title shows current page number
++ - changed the icon to a 64 pixel width one. not nice but ...
++ - added a small mini icon for the title bar. is there a property I can set?
++ - pressing on the CPN puts the page on hold
++ - pressing on the violet * reveals concealed text
++ - added simple menu if no FastText menu is present
++ - allow subpages to be specified on the command line (eg 100/4)
++
++Sat Dec 5 20:59:51 MET 1998 (1.2.0)
++
++ Release 1.2.0
++
++ - finished the help pages.
++ - added command line handling
++ - added user geometry handling in xio.c
++
++Sat Dec 5 02:28:16 MET 1998 (1.1.2)
++
++ - allow magazin 9 (help system)
++ - start box char after a pagenumber selects subpage 1 (hack)
++ - added a crude page editor (just to create the help pages. not for users.)
++ - started with the online help system (sounds great, hehe)
++
++Tue Dec 1 20:19:53 MET 1998 (1.1.1)
++
++ - added concept of parent and child windows. now, the middle mouse
++ button changes the contens of the child window. if there isn't
++ one, it is created.
++ - Middle mouse button on x/y (subpage cycling) selects the previous
++ subpage. (updating the child with subpages is hairy...)
++
++Sun Nov 29 23:34:18 MET 1998 (1.1.0)
++
++ Release 1.1.0
++
++ - removed most of the recovery for single bad lines (does too much harm)
++ - changed handling of parallel mode transmission (untested. unused in .de)
++ - added selection (text & graphic!). try pasting into xpaint :-)
++ - added cache-clear function ('c')
++ - click on x/y selects the next subpage
++ - some minor tweaks
++ - added an icon bitmap.
++
++Wed Nov 24 23:33:34 MET 1998 (1.0.0)
++
++ First Release 1.0.0
+diff -r af23d23c278b util/alevt/EXPORT.HOWTO
+--- /dev/null Thu Jan 01 00:00:00 1970 +0000
++++ b/util/alevt/EXPORT.HOWTO Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,84 @@
++HOW TO IMPLEMENT A NEW EXPORT MODULE:
++
++As an example look at exp-txt.c (it implements two modules which
++are pretty similar).
++
++You have to create one exported structure (struct export_module).
++This structure holds the following data:
++
++1. The name of the format (example: "ascii").
++
++2. The default extension to use for building filenames ("txt").
++
++3. A list of module options. It's a 0 terminated array of char
++pointers, one for each option (similar to argv of main).
++If an option string contains a '=', it is an option that
++requires an argument. The part after the '=' is ignored at
++the moment. Later, I want to add help messages that show
++these options strings and then the part after the '=' becomes
++useful.
++If you do not have local options, set this field to 0.
++
++4. The number of bytes for local data in the export structure.
++There you may store data collected during option parsing or
++for whatever you want.
++Don't use global variables for storing this data! With
++alevt-cap you may give:
++
++alevt-cap -format ascii,color 100 -format ascii 100
++
++to save the page in two different formats. Using global
++vars would inhibit this. The data area in struct export
++starts at the 'data' field. You have to cast it to the
++appropriate type (see the D macro in exp-txt.c).
++If you do not need local data, set this field to 0.
++
++5. An open function (or call it constructor). It is called
++when your module is needed and it is passed a struct export
++(the instance). This function may be used to initialize
++the local data in the export struct.
++If all goes well return 0. Else call export_error (see
++below) and return -1.
++If you do not need an open function, set this field to 0.
++
++6. A close function (or call it destructor). It is called
++when your module is no longer needed. If you allocated
++memory in the open func, this is the place to free it.
++If you do not need a close function, set it to 0.
++
++7. An option function. It is called for each module option
++the user has given. It is passed an option number (first
++option in the option-array gives 1, ...) and a char pointer
++to the argument for that option (0 if the option does not
++need an arg). The argument pointer keeps valid until the
++close function is called.
++If all goes well, return 0. Else call export_error and
++return -1.
++If you gave an option list at point 3 you have to specify
++this function. Else set it to 0.
++
++8. An output function. It is called to produce the output.
++It is given the file name to use and a fmt_page pointer.
++The fmt_page contains an interpreted image of the page.
++There are no control chars in it. It uses the character
++set defined by the two fonts.
++These function may be called consecutive for multiple
++pages. Don't expect one output for one open/close.
++Return codes as above... (0: ok, -1: error).
++
++The export_error function: If one of your functions wants to
++report an error, it has to use the export_error function.
++It's a printf like function to set error messages. In alevt-cap
++these messages are printed to stderr, in alevt they will be
++shown in the status line (so don't make them too long).
++
++The last step is to add your export_module structure to the
++list of modules in export.c (at the top).
++Please, make sure that this structure is the only exported
++symbol. All other things should be static.
++
++That's all. A structure describing your module and 4 functions
++(open, close, option, output) to implement it. Shouldn't be too
++complicated.
++
++Ciao, ET.
+diff -r af23d23c278b util/alevt/Makefile
+--- /dev/null Thu Jan 01 00:00:00 1970 +0000
++++ b/util/alevt/Makefile Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,130 @@
++VER=1.7.0
++OPT=-O -g -w
++DEFS=-DWITH_PNG
++DEFS+=-DUSE_LIBZVBI
++FONT=vtxt
++MAN_DIR=man
++DESTDIR=
++PREFIX=/usr
++HOSTCC=$(CC)
++CFLAGS=$(OPT) -DVERSION=\"$(VER)\" $(DEFS) -I$(USR_X11R6)/include
++EXPOBJS=export.o exp-txt.o exp-html.o exp-gfx.o font.o
++OBJS=main.o ui.o xio.o fdset.o vbi.o cache.o help.o search.o misc.o hamm.o lang.o $(EXPOBJS)
++TOBJS=alevt-date.o vbi.o fdset.o misc.o hamm.o lang.o
++COBJS=alevt-cap.o vbi.o fdset.o misc.o hamm.o lang.o $(EXPOBJS)
++
++ifneq ($(findstring WITH_PNG,$(DEFS)),)
++EXPLIBS=-lpng -lz -lm
++endif
++
++ifneq ($(findstring USE_LIBZVBI,$(DEFS)),)
++ZVBILIB=-lzvbi -lpthread
++EXPLIBS+=$(ZVBILIB)
++endif
++
++all: alevt alevt-date alevt-cap alevt.1 alevt-date.1 alevt-cap.1
++
++alevt: $(OBJS)
++ $(CC) $(OPT) $(OBJS) -o alevt -L$(PREFIX)/lib -L$(PREFIX)/lib64 -lX11 $(EXPLIBS)
++
++alevt-date: $(TOBJS)
++ $(CC) $(OPT) $(TOBJS) -o alevt-date $(ZVBILIB)
++
++alevt-cap: $(COBJS)
++ $(CC) $(OPT) $(COBJS) -o alevt-cap $(EXPLIBS)
++
++font.o: font1.xbm font2.xbm font3.xbm font4.xbm
++fontsize.h: font1.xbm font2.xbm font3.xbm font4.xbm
++ fgrep -h "#define" font1.xbm font2.xbm font3.xbm font4.xbm >fontsize.h
++
++font1.xbm: bdf2xbm $(FONT)-latin-1.bdf
++ ./bdf2xbm font1 <$(FONT)-latin-1.bdf >font1.xbm
++
++font2.xbm: bdf2xbm $(FONT)-latin-2.bdf
++ ./bdf2xbm font2 <$(FONT)-latin-2.bdf >font2.xbm
++
++font3.xbm: bdf2xbm vtxt-koi8.bdf
++ ./bdf2xbm font3 <vtxt-koi8.bdf >font3.xbm
++
++font4.xbm: bdf2xbm vtxt-iso8859-7.bdf
++ ./bdf2xbm font4 <vtxt-iso8859-7.bdf >font4.xbm
++
++bdf2xbm: bdf2xbm.c
++ $(HOSTCC) bdf2xbm.c -o bdf2xbm
++
++clean:
++ rm -f *.o page*.txt a.out core bdf2xbm font?.xbm fontsize.h
++ rm -f alevt alevt-date alevt-cap
++
++rpm-install: all
++ install -m 0755 alevt ${RPM_BUILD_ROOT}$(USR_X11R6)/bin
++ install -m 0755 alevt-date ${RPM_BUILD_ROOT}$(USR_X11R6)/bin
++ install -m 0755 alevt-cap ${RPM_BUILD_ROOT}$(USR_X11R6)/bin
++ install -m 0644 alevt.1 ${RPM_BUILD_ROOT}$(USR_X11R6)/$(MAN)/man1
++ install -m 0644 alevt-date.1 ${RPM_BUILD_ROOT}$(USR_X11R6)/$(MAN)/man1
++ install -m 0644 alevt-cap.1 ${RPM_BUILD_ROOT}$(USR_X11R6)/$(MAN)/man1
++ install -d 0755 $(RPM_BUILD_ROOT)$(USR_X11R6)/include/X11/pixmaps
++ install -m 0644 alevt.png $(RPM_BUILD_ROOT)$(USR_X11R6)/include/X11/pixmaps
++
++install: all
++ install -m 0755 alevt $(DESTDIR)$(PREFIX)/bin
++ install -m 0755 alevt-date $(DESTDIR)$(PREFIX)/bin
++ install -m 0755 alevt-cap $(DESTDIR)$(PREFIX)/bin
++ install -m 0644 alevt.1 $(DESTDIR)$(PREFIX)/share/man/man1
++ install -m 0644 alevt-date.1 $(DESTDIR)$(PREFIX)/share/man/man1
++ install -m 0644 alevt-cap.1 $(DESTDIR)$(PREFIX)/share/man/man1
++ install -m 0644 alevt.png $(DESTDIR)$(PREFIX)/share/pixmaps
++ install -m 0644 alevt.desktop $(DESTDIR)$(PREFIX)/share/applications
++
++uninstall: clean
++ rm -f /usr/bin/alevt /usr/bin/alevt-cap /usr/bin/alevt-date \
++ /usr/share/pixmaps/alevt.png /usr/share/applications/alevt.desktop \
++ /usr/share/man/man1/alevt.1 /usr/share/man/man1/alevt-cap.1 \
++ /usr/share/man/man1/alevt-date.1
++
++depend:
++ makedepend -Y -- $(CFLAGS_none) -- *.c 2>/dev/null
++
++tar-html: alevt.1 alevt-date.1 alevt-cap.1
++ for i in alevt.1 alevt-date.1 alevt-cap.1 ; do \
++ j=`basename $$i .1` ; \
++ j=`basename $$j .1x` ; \
++ nroff -man $$i | { \
++ echo "<HTML><HEAD><TITLE>AleVT</TITLE></HEAD><BODY>" ; \
++ man2html -bare -uelem U -nodepage ; \
++ echo "</B0DY></HTML>" ; \
++ } | sed -e "s,</B> <B>, ,g" -e "s,</U> <U>, ,g" >~/exit/alevt/$$j.html ;\
++ done
++
++tar: tar-html clean
++ sed s/VERSION/$(VER)/g <alevt.lsm.in >~/exit/alevt/alevt-$(VER).lsm
++ sed s/VERSION/$(VER)/g <alevt.spec.in >alevt.spec
++ cd .. ;\
++ ln -s alevt alevt-$(VER) ;\
++ tar vcfz ~/exit/alevt/alevt-$(VER).tar.gz alevt-$(VER)/* ;\
++ rm alevt-$(VER)
++ cat <CHANGELOG >~/exit/alevt/changes
++
++# DO NOT DELETE
++
++alevt-cap.o: vt.h misc.h fdset.h dllist.h vbi.h cache.h lang.h export.h
++alevt-date.o: os.h vt.h misc.h fdset.h dllist.h vbi.h cache.h lang.h
++cache.o: misc.h dllist.h cache.h vt.h help.h
++exp-gfx.o: lang.h misc.h vt.h export.h font.h fontsize.h
++exp-html.o: lang.h misc.h vt.h export.h
++exp-txt.o: os.h export.h vt.h misc.h
++export.o: vt.h misc.h export.h
++fdset.o: dllist.h misc.h fdset.h
++font.o: font1.xbm font2.xbm font3.xbm font4.xbm
++hamm.o: vt.h misc.h hamm.h
++help.o: vt.h misc.h vt900.out vt901.out vt902.out vt903.out vt904.out vt905.out
++help.o: vt906.out vt907.out vt908.out vt909.out vt910.out vt911.out vt912.out
++lang.o: misc.h vt.h lang.h
++main.o: vt.h misc.h fdset.h dllist.h xio.h vbi.h cache.h lang.h ui.h
++main.o: search.h
++misc.o: misc.h
++search.o: vt.h misc.h cache.h dllist.h search.h
++ui.o: vt.h misc.h xio.h dllist.h vbi.h cache.h lang.h fdset.h
++ui.o: search.h export.h ui.h
++vbi.o: os.h vt.h misc.h vbi.h dllist.h cache.h lang.h fdset.h hamm.h
++xio.o: vt.h misc.h dllist.h xio.h fdset.h lang.h icon.xbm font.h fontsize.h
+diff -r af23d23c278b util/alevt/README
+--- /dev/null Thu Jan 01 00:00:00 1970 +0000
++++ b/util/alevt/README Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,72 @@
++Hi,
++
++this software is not just a program, it's moreover a legend.
++It is THE protagonist of all videotext applications under Linux.
++
++During the past 10 years the video standards, the APIs, the kernel
++have seen lots of changes.
++But unfortunately this program has NOT seen much maintenance.
++The results of that misfit appearance are:
++
++1. lots of forks flying around in the Internet
++2. lots of patches flying around, some good, some disgusting, some out of time
++3. lots of cruft which is completely outdated or obsolete for other reasons
++
++To handle all that in one big effort I decided to redesign the program
++completely, enlarging its capabilities for DVB-S at the same time.
++
++So here are the changes:
++
++1. Erasure of old help pages and rename / reorganize / update the rest
++-> redesign of the online help system / implying alevt-date and alevt-cap
++
++2. Erasure of old outdated integers, functions, parameters:
++
++- bell, big_buf, debug, display, editor, erc, fine_tune, newbttv,
++- oldbttv
++
++3. Coding style cleanups (no superfluous comments, not more than
++ 80 characters per column, no uncommented code.
++
++4. No strange characters in the outfile, latin alphabet in purity instead.
++
++5. Alevt can be started in 4 modes now if you are running it in DVB mode:
++
++- by service id (sid)
++- by teletext pid (ttpid)
++- by channel name
++- without parameter
++
++6. Starting it in DVB mode on the command line it presents you
++a table with human readable values such as sid, teletext pid,
++PMT (Program Map Table), provider name, service name, language, service type.
++This makes it easier for you to start multiple teletext windows
++in multiple console sessions manually.
++
++If working with a script and the option -o (outfile) you can
++also start multiple teletext windows of all channels in a transponder.
++I develop a GUI using TCL / TK 8.5 and Iwidgets 4.01 to do that and other
++tasks graphically (i. e. by mouse click).
++
++7. If you install the program on the command line by typing "make &
++ make install" there is an uninstaller now to revert the installation:
++ "make uninstall".
++
++ENJOY IT!
++
++Uwe Bugla, February 11th, 2010.
++
++External dependencies
++
++AleVT needs some system libraries to be installed in your system.
++They are zlib, libX11, libpng and libzvbi.
++
++Credits go to:
++- Andreas Rottmann from debian.org for compiler fixes and
++ other kinds of investigation.
++- Francesco Lavra for supplying a kernel patch to avoid kernel demux
++ incompatibilities with kernels >= 2.6.32
++- Andy Walls for helpful investigation in kernelspace
++- Edgar Toernig for providing the source version 1.6.2 and doing all the
++ development for the basic versions
++- Tom Zoerner for the implementation of libzvbi
+diff -r af23d23c278b util/alevt/README.OLD
+--- /dev/null Thu Jan 01 00:00:00 1970 +0000
++++ b/util/alevt/README.OLD Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,78 @@
++Hi, Menden, 21 Sep 2000
++
++ This program decodes and displays Videotext/Teletext from a
++ /dev/vbi device.
++
++
++COMPILE & INSTALL:
++
++ There's nothing to configure. A simple 'make' is all.
++ If you do not want png support remove the WITH_PNG in
++ the Makefile. Additionally, if you want a smaller font
++ uncomment the "FONT=neep9" line.
++
++ It gives you 'alevt', 'alevt-date', and 'alevt-cap' and
++ their man pages 'alevt.1x', 'alevt-date.1', and 'alevt-cap.1'.
++
++ You can install them where ever you want (i.e. /usr/local/bin).
++ The programs are self-contained and require no other files.
++
++ NOTE: Be careful with 'make install'. It's just for me :-)
++
++
++PROBLEMS:
++
++ If you have a lot of decoding errors (lot of these lightning symbols)
++ you may try pressing the 'f' and 'F' key. This allows fine tuning of
++ the decoder circuit. There's also a -finetune command line option.
++ This should only be necessary on really bad signals.
++
++ Maybe, I add autotuning later...
++
++ UPDATE: added autotuning. It's the default. If you add -debug the
++ the actions of the pll are printed to stdout.
++
++ To get the old (pre finetune) behaviour start it with -finetune 0.
++
++ UPDATE: disabled autotuning *g* sometimes it's too jumpy...
++
++
++ALEVT-DATE:
++ I added a little tool to set the system time from the videotext
++ time. The date is not interpreted (not even transmitted on some
++ channels). So it allows only adjustment of +/-12 hours.
++ The default allowed adjustment is limited to +/-2 hours (use
++ -delta to change). Without the -set option it just display
++ the date in the format of the date command. Look at strftime(3)
++ for possible control sequences you may use in the -format option.
++
++
++HACKING:
++
++ If you want to play with the font size, you may resize it with
++ xv (xv font1.xbm). Just make sure, that its width is a multiple of
++ 32 and its height a multiple of 8. A simple make will create
++ a version of AleTV with the new font. Warning: a make clean
++ will erase font1.xbm. The next make will recreate font.xbm from
++ vtxt.bdf.
++
++ AleVT has a built in page editor. If you start it with -editor
++ you may press 'E' to invoke it. For the usage you have to consult
++ the sources. (It's very crude!)
++
++
++TODO: (no specific order)
++
++ - Error correction in alevt-cap
++ - Better language support. Internal 16-bit charset.
++ - Separated graphics.
++ - Rewrite the whole stuff. A networked teletext daemon and clients
++ that connect to it for display, capture, cgi, ...
++
++
++NEWER VERSIONS:
++
++ The primary site of AleVT is http://goron.de/~froese
++
++Have fun,
++Edgar Toernig (froese@gmx.de)
+diff -r af23d23c278b util/alevt/ReadmeGR
+--- /dev/null Thu Jan 01 00:00:00 1970 +0000
++++ b/util/alevt/ReadmeGR Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,28 @@
++29-9-2003
++
++ÅëëçíéêÜ ãéá ôï ALEVT
++Ç ðñïóèÞêç Åëëçíéêþí Ýãéíå ôñïðïðïéþíôáò ôï patch alevt-1.6.3.rus.diff ðïõ âñßóêåôå óôï öÜêåëï
++contrib óôá sources ôïõ alevt-1.6.3
++
++ÎåêéíÞóôå ôï ðñüãñáììá ìå ôçí ðáñÜìåôñï
++
++alevt -charset iso8859-7
++
++ç
++
++alevt -charset el
++
++ÄïõëåéÝò ðïõ Ý÷ïõí íá ãßíïõí:
++Êáëýôåñïò ó÷åäéáóìüò ôïõ font file vtxt-iso8859-7.bdf
++ïé Áããëéêïß ÷áñáêôÞñåò ìïéÜæïõí óáí bold óå ó÷Ýóç ìå ôïõò Åëëçíéêïýò êáé õðÜñ÷ïõí
++êÜðïéá ìéêñÜ ðñïâëçìáôÜêéá ìå ôïõò graphics (0x01 -0x1f)
++
++¸ëåã÷ïò ãéá ôï áí áðåéêïíßæïíôáé óùóôÜ üëïé ïé ÷áñáêôÞñåò
++
++¼ðïéïò èÝëåé íá âïçèÞóåé ðáñáêáëþ íá ìïõ óôåßëåé ôçò áëëáãÝò ôïõ óôï sl45sms@yahoo.gr
++Áí êÜðïéïò êÜíåé åêôåôáìÝíåò áëëáãÝò ðïõ äåí áöïñïýí ôá ÅëëçíéêÜ èá ðñÝðåé íá ôéò óôåßëåé êáé
++óôïí óõããñáöÝá ôïõ ðñïãñÜììáôïò
++
++ÍåüôåñÜ áñ÷åßá ôïõ ðáñüíôïò èá ìðïñåßôå íá âñßóêåôå óôï http://go.to/sl45sms/alevt/index.html
++
++ÓêáñâÝëçò Ðáíáãéþôçò
+diff -r af23d23c278b util/alevt/TODO
+--- /dev/null Thu Jan 01 00:00:00 1970 +0000
++++ b/util/alevt/TODO Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,12 @@
++Hi, these are issues that I unfortunately cannot resolve myself:
++
++1. graphical menu written in GKT2, to be used in general connection with
++ the outfile (-o) option.
++
++2. for usage without script and outfile option:
++ DVB monitoring demon helping the program to rewrite the PAT when the
++ external player software has chosen a channel which is part of a
++ new transponder.
++ At the moment alevt hangs when the transponder is changed.
++
++Uwe Bugla, February 11th, 2010.
+diff -r af23d23c278b util/alevt/alevt-cap.1
+--- /dev/null Thu Jan 01 00:00:00 1970 +0000
++++ b/util/alevt/alevt-cap.1 Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,53 @@
++.TH alevt-cap 1 "February 07, 2010"
++.SH NAME
++alevt-cap \- capture teletext windows.
++.SH SYNOPSIS
++.B alevt-cap
++.RI [ options ]
++.br
++.SH DESCRIPTION
++This manual page documents briefly the
++.B alevt-cap
++commands.
++.PP
++\fBalevt-cap\fP is a program to capture teletext pages.
++.SH OPTIONS
++.TP
++.B \-cs -charset <latin-1/2/koi8-r/iso-8859-7>
++character set
++.TP
++.B \-f -format <fmt[,options]>
++format to save
++.TP
++.B \-f help -format help
++lists available storage formats
++.TP
++.B \-h -help
++print this page
++.TP
++.B \-n -name <filename>
++page name to save
++.B \-t -timeout <secs>
++timeout
++.TP
++.B \-s -sid <sid>
++service pid
++.TP
++.B \-t -ttpid <ttpid>
++teletext pid
++.TP
++.B \-v -vbi <vbidev>
++vbi device
++.TP
++Sequence: /dev/vbi; /dev/vbi0; /dev/video0; /dev/dvb/adapter0/demux0
++.TP
++ppp.ss stands for a page number and an optional
++subpage number (example: 123.4).
++.TP
++.SH SEE ALSO
++.BR alevt-date (1) , alevt (1).
++.br
++.SH AUTHOR
++alevt-cap was written by Edgar Toernig <froese@gmx.de>.
++.PP
++This manual page was written by Uwe Bugla <uwe.bugla@gmx.de>.
+diff -r af23d23c278b util/alevt/alevt-cap.c
+--- /dev/null Thu Jan 01 00:00:00 1970 +0000
++++ b/util/alevt/alevt-cap.c Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,280 @@
++#include <stdio.h>
++#include <stdlib.h>
++#include <string.h>
++#include <locale.h>
++#include <signal.h>
++#include <unistd.h>
++#include "vt.h"
++#include "misc.h"
++#include "fdset.h"
++#include "vbi.h"
++#include "lang.h"
++#include "dllist.h"
++#include "export.h"
++
++static volatile int timed_out = 0;
++static char *channel;
++char *outfile = "";
++u_int16_t sid;
++
++
++struct req
++{
++ struct dl_node node[1];
++ char *name; // file name
++ char *pgno_str; // the pgno as given on the cmdline
++ int pgno, subno; // decoded pgno
++ struct export *export; // export data
++ struct vt_page vtp[1]; // the capture page data
++};
++
++
++static void usage(FILE *fp, int exitval)
++{
++ fprintf(fp, "\nUsage: %s [options] ppp.ss...\n", prgname);
++ fprintf(fp,
++ "\n"
++ " Valid options:\t\tDefault:\n"
++ " -cs -charset\t\tlatin-1\n"
++ " <latin-1/2/koi8-r/iso8859-7>\n"
++ " -f -format <fmt,options>\tascii\n"
++ " -f help -format help\n"
++ " -h -help\n"
++ " -n -name <filename>\t\tttext-%%s.%%e\n"
++ " -s -sid <sid>\t\t(none;dvb only)\n"
++ " -to -timeout <secs>\t\t(none)\n"
++ " -t -ttpid <ttpid>\t\t(none;dvb only)\n"
++ " -v -vbi <vbidev>\t\t/dev/vbi\n"
++ " \t\t/dev/vbi0\n"
++ " \t\t/dev/video0\n"
++ " \t\t/dev/dvb/adapter0/demux0\n"
++ "\n"
++ " ppp.ss stands for a page number and an\n"
++ " optional subpage number (ie 123.4).\n"
++ );
++ exit(exitval);
++}
++
++
++static void exp_help(FILE *fp)
++{
++ struct export_module **ep;
++ char **cp, c;
++
++ fprintf(fp,
++ "\nSyntax: -format Name[,Options]\n"
++ "\n"
++ " Name\tExt.\tOptions\n"
++ " --------------------------------\n"
++ );
++ for (ep = modules; *ep; ep++)
++ {
++ fprintf(fp, " %-7s\t.%-4s", (*ep)->fmt_name, (*ep)->extension);
++ for (c = '\t', cp = (*ep)->options; cp && *cp; cp++, c = ',')
++ fprintf(fp, "%c%s", c, *cp);
++ fprintf(fp, "\n");
++ }
++ fprintf(fp,
++ "\n"
++ "Common options: reveal,hide\n"
++ "Example: -format ansi,reveal,bg=none\n"
++ "\n"
++ );
++ exit(0);
++}
++
++
++static int arg_pgno(char *p, int *subno)
++{
++ char *end;
++ int pgno;
++
++ *subno = ANY_SUB;
++ if (*p)
++ {
++ pgno = strtol(p, &end, 16);
++ if ((*end == ':' || *end == '/' || *end == '.') && end[1])
++ *subno = strtol(end + 1, &end, 16);
++ if (*end == 0)
++ if (pgno >= 0x100 && pgno <= 0x899)
++ if (*subno == ANY_SUB || (*subno >= 0x00 && *subno <= 0x3f7f))
++ return pgno;
++ }
++ fatal("%s: invalid page number", p);
++}
++
++
++static int option(int argc, char **argv, int *ind, char **arg)
++{
++ static struct { char *nam, *altnam; int arg; } opts[] = {
++ { "-charset", "-cs", 1 },
++ { "-format", "-f", 1 },
++ { "-help", "-h", 0 },
++ { "-name", "-n", 1 },
++ { "-sid", "-s", 1 },
++ { "-timeout", "-to", 1 },
++ { "-ttpid", "-t", 1 },
++ { "-vbi", "-v", 1 },
++ };
++ int i;
++
++ if (*ind >= argc)
++ return 0;
++
++ *arg = argv[(*ind)++];
++ for (i = 0; i < NELEM(opts); ++i)
++ if (streq(*arg, opts[i].nam) || streq(*arg, opts[i].altnam))
++ {
++ if (opts[i].arg)
++ if (*ind < argc)
++ *arg = argv[(*ind)++];
++ else
++ fatal("option %s requires an argument", *arg);
++ return i+1;
++ }
++
++ if (**arg == '-')
++ {
++ fatal("%s: invalid option", *arg);
++ usage(stderr, 2);
++ }
++
++ return -1;
++}
++
++
++static void event(struct dl_head *reqs, struct vt_event *ev)
++{
++ struct req *req, *nxt;
++
++ switch (ev->type)
++ {
++ case EV_PAGE: // new page
++ {
++ struct vt_page *vtp = ev->p1;
++
++ for (req = PTR reqs->first; nxt = PTR req->node->next; req = nxt)
++ if (req->pgno == vtp->pgno)
++ if (req->subno == ANY_SUB || req->subno == vtp->subno)
++ {
++ *req->vtp = *vtp;
++ dl_insert_last(reqs + 1, dl_remove(req->node));
++ }
++ }
++ }
++}
++
++
++int main(int argc, char **argv)
++{
++ char *vbi_name = NULL;
++ int timeout = 0;
++ char *fname = "ttext-%s.%e";
++ char *out_fmt = "ascii";
++ struct export *fmt = 0;
++ int opt, ind;
++ char *arg;
++ struct vbi *vbi;
++ struct req *req;
++ struct dl_head reqs[2]; // simple linear lists of requests & captures
++ int ttpid = -1;
++
++ setlocale (LC_CTYPE, "");
++ setprgname(argv[0]);
++
++ fdset_init(fds);
++ dl_init(reqs); // the requests
++ dl_init(reqs+1); // the captured pages
++
++ ind = 1;
++ while (opt = option(argc, argv, &ind, &arg))
++ switch (opt)
++ {
++ case 1: // charset
++ if (streq(arg, "latin-1") || streq(arg, "1"))
++ latin1 = 1;
++ else if (streq(arg, "latin-2") || streq(arg, "2"))
++ latin1 = 0;
++ else if (streq(arg, "koi8-r") || streq(arg, "koi"))
++ latin1 = KOI8;
++ else if (streq(arg, "iso8859-7") || streq(arg, "el"))
++ latin1 = GREEK;
++ else
++ fatal("bad charset (not latin-1/2/koi8-r/iso8859-7)");
++ break;
++ case 2: // format
++ if (streq(arg, "help") || streq(arg, "?") || streq(arg, "list"))
++ exp_help(stdout);
++ out_fmt = arg;
++ fmt = 0;
++ break;
++ case 3: // help
++ usage(stdout, 0);
++ break;
++ case 4: // name
++ fname = arg;
++ break;
++ case 5: // timeout
++ timeout = strtol(arg, 0, 10);
++ if (timeout < 1 || timeout > 999999)
++ fatal("bad timeout value", timeout);
++ break;
++ case 6: // service id
++ sid = strtoul(arg, NULL, 0);
++ break;
++ case 7: // teletext pid
++ ttpid = strtoul(arg, NULL, 0);
++ break;
++ case 8: // vbi
++ vbi_name = arg;
++ break;
++ case -1: // non-option arg
++ if (not fmt)
++ fmt = export_open(out_fmt);
++ if (not fmt)
++ fatal("%s", export_errstr());
++ if (not(req = malloc(sizeof(*req))))
++ out_of_mem(sizeof(*req));
++ req->name = fname;
++ req->pgno_str = arg;
++ req->pgno = arg_pgno(arg, &req->subno);
++ req->export = fmt;
++ dl_insert_last(reqs, req->node);
++ break;
++ }
++
++ if (dl_empty(reqs))
++ fatal("no pages requested");
++
++ // setup device
++ if (not(vbi = vbi_open(vbi_name, 0, channel, outfile, sid, ttpid)))
++ fatal("cannot open %s", vbi_name);
++ vbi_add_handler(vbi, event, reqs); // register event handler
++
++ if (timeout)
++ alarm(timeout);
++
++ // capture pages (moves requests from reqs[0] to reqs[1])
++ while (not dl_empty(reqs) && not timed_out)
++ if (fdset_select(fds, 30000) == 0) // 30sec select time out
++ {
++ error("no signal.");
++ break;
++ }
++
++ alarm(0);
++ vbi_del_handler(vbi, event, reqs);
++ vbi_close(vbi);
++ if (not dl_empty(reqs))
++ error("capture aborted. Some pages are missing.");
++
++ for (req = PTR reqs[1].first; req->node->next; req = PTR req->node->next)
++ {
++ fname = export_mkname(req->export, req->name, req->vtp, req->pgno_str);
++ if (not fname || export(req->export, req->vtp, fname))
++ error("error saving page %s: %s", req->pgno_str, export_errstr());
++ if (fname)
++ free(fname);
++ }
++ exit(dl_empty(reqs) ? 0 : 1);
++}
+diff -r af23d23c278b util/alevt/alevt-date.1
+--- /dev/null Thu Jan 01 00:00:00 1970 +0000
++++ b/util/alevt/alevt-date.1 Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,41 @@
++.TH alevt-date 1 "February 07, 2010"
++.SH NAME
++alevt-date \- print out UTC date.
++.SH SYNOPSIS
++.B alevt-date
++.RI [ options ]
++.br
++.SH DESCRIPTION
++This manual page documents briefly the
++.B alevt-date
++commands.
++.PP
++\fBalevt-date\fP is a program to print the UTC date.
++.SH OPTIONS
++.TP
++.B \-d -delta <max_secs>
++maximum delta
++.TP
++.B \-f -format <fmtstr>
++time format
++.TP
++.B \-h -help
++print this page
++.TP
++.B \-s -set
++set the system clock
++.TP
++.B \-t -timeout <seconds>
++timeout
++.TP
++.B \-v -vbi <vbidev>
++vbi device /dev/vbi; /dev/vbi0; /dev/video0; /dev/dvb/adapter0/demux0
++.TP
++.br
++.SH SEE ALSO
++.BR alevt-cap (1) , alevt (1).
++.br
++.SH AUTHOR
++alevt-date was written by Edgar Toernig <froese@gmx.de>.
++.PP
++This manual page was written by Uwe Bugla <uwe.bugla@gmx.de>.
+diff -r af23d23c278b util/alevt/alevt-date.c
+--- /dev/null Thu Jan 01 00:00:00 1970 +0000
++++ b/util/alevt/alevt-date.c Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,225 @@
++#include <stdio.h>
++#include <string.h>
++#include <sys/time.h>
++#include <time.h>
++#include <stdlib.h>
++#include <unistd.h>
++#include <signal.h>
++#include "os.h"
++#include "vt.h"
++#include "fdset.h"
++#include "vbi.h"
++#include "lang.h"
++#include "misc.h"
++
++char *fmt = "%a %b %d %H:%M:%S %Z %Y";
++int max_diff = 2*60*60; // default: 2 hours
++int set_time = 0;
++char *outfile = "";
++static char *channel;
++u_int16_t sid;
++
++
++static void chk_time(int t)
++{
++ struct tm *tm;
++ time_t sys_t;
++ int dt;
++ char buf[256];
++
++ if (t < 0 || t > 235959 || t%100 > 59 || t/100%100 > 59)
++ return;
++
++ sys_t = time(0);
++ tm = localtime(&sys_t);
++
++ // Now convert to UTC seconds
++ t = t/100/100 * 60*60 + t/100%100 * 60 + t%100;
++#ifdef BSD
++ t -= tm->tm_gmtoff; // dst already included...
++#else
++ t += timezone;
++ if (tm->tm_isdst)
++ t -= 60*60;
++#endif
++
++ dt = t - sys_t % (24*60*60);
++ if (dt <= -12*60*60)
++ dt += 24*60*60;
++
++ if (dt <= -max_diff || dt >= max_diff)
++ fatal("time diff too big (%2d:%02d:%02d)", dt/60/60, abs(dt)/60%60, abs(dt)%60);
++
++ sys_t += dt;
++
++ if (set_time)
++ {
++ struct timeval tv[1];
++
++ tv->tv_sec = sys_t;
++ tv->tv_usec = 500000;
++ if (settimeofday(tv, 0) == -1)
++ ioerror("settimeofday");
++ }
++ if (*fmt)
++ {
++ tm = localtime(&sys_t);
++ if (strftime(buf, sizeof(buf), fmt, tm))
++ puts(buf);
++ }
++ exit(0);
++}
++
++
++static void event(void *_, struct vt_event *ev)
++{
++ switch (ev->type)
++ {
++ /* vbi may generate EV_PAGE, EV_HEADER, EV_XPACKET */
++ /* for event arguments see vt.h */
++
++ case EV_HEADER: // a new title line (for running headers)
++ {
++ static int last_t = -1;
++ u8 *s = ev->p1;
++ int i, t = 1;
++
++ if (ev->i2 & PG_OUTOFSEQ)
++ break;
++
++ for (i = 32; i < 40; ++i)
++ if (s[i] >= '0' && s[i] <= '9')
++ t = t * 10+ s[i] - '0';
++ if (t >= 1000000 && t <= 1235959)
++ if (t == last_t || t - last_t == 1)
++ chk_time(t - 1000000);
++ last_t = t;
++ break;
++ }
++ }
++}
++
++
++static void usage(FILE *fp, int exit_val)
++{
++ fprintf(fp, "usage: %s [options]\n", prgname);
++ fprintf(fp,
++ "\n"
++ " Valid options:\t\tDefault:\n"
++ " -d -delta <max_secs>\t7200 (2 hours)\n"
++ " -f -format <fmtstr>\t\t%%c\n"
++ " -h -help\n"
++ " -s -set\t\t\toff\n"
++ " -to -timeout <seconds>\t(none)\n"
++ " -v -vbi <vbidev>\t\t/dev/vbi\n"
++ " \t\t/dev/vbi0\n"
++ " \t\t/dev/video0\n"
++ " \t\t/dev/dvb/adapter0/demux0\n"
++ );
++ exit(exit_val);
++}
++
++
++static int option(int argc, char **argv, int *ind, char **arg)
++{
++ static struct { char *nam, *altnam; int arg; } opts[] = {
++ { "-delta", "-d", 1 },
++ { "-format", "-f", 1 },
++ { "-help", "-h", 0 },
++ { "-set", "-s", 0 },
++ { "-timeout", "-to", 1 },
++ { "-vbi", "-v", 1 },
++ };
++ int i;
++
++ if (*ind >= argc)
++ return 0;
++
++ *arg = argv[(*ind)++];
++ for (i = 0; i < NELEM(opts); ++i)
++ if (streq(*arg, opts[i].nam) || streq(*arg, opts[i].altnam))
++ {
++ if (opts[i].arg)
++ if (*ind < argc)
++ *arg = argv[(*ind)++];
++ else
++ fatal("option %s requires an argument", *arg);
++ return i+1;
++ }
++
++ if (**arg == '-')
++ {
++ fatal("%s: invalid option", *arg);
++ usage(stderr, 1);
++ }
++
++ return -1;
++}
++
++
++int main(int argc, char **argv)
++{
++ char *vbi_name = NULL;
++ int timeout = 0;
++ struct vbi *vbi;
++ int opt, ind;
++ char *arg;
++ int ttpid = -1;
++
++ setprgname(argv[0]);
++ ind = 1;
++ while (opt = option(argc, argv, &ind, &arg))
++ switch (opt)
++ {
++ case 1: // -delta
++ max_diff = atoi(arg);
++ if (max_diff < 1)
++ fatal("-delta: illegal value '%s'", arg);
++ if (max_diff > 12*60*60)
++ {
++ max_diff = 12*60*60;
++ error("-delta: %d too big. Assuming %d", arg, max_diff);
++ }
++ break;
++ case 2: // -format
++ fmt = arg;
++ break;
++ case 3: // help
++ usage(stdout, 0);
++ break;
++ case 4: // -set
++ set_time = 1;
++ break;
++ case 5: // -timeout
++ timeout = atoi(arg);
++ if (timeout < 1 || timeout > 60*60)
++ fatal("-timeout: illegal value '%s'", arg);
++ break;
++ case 6: // -vbi
++ vbi_name = arg;
++ break;
++ case -1:
++ usage(stderr, 1);
++ break;
++ }
++
++ fdset_init(fds);
++
++ if (timeout)
++ {
++ signal(SIGALRM, SIG_DFL); // kill me
++ alarm(timeout);
++ }
++ vbi = vbi_open(vbi_name, 0, channel, outfile, sid, ttpid); // open device
++ if (not vbi)
++ fatal_ioerror(vbi_name);
++ vbi_add_handler(vbi, event, 0); // register event handler
++
++ for (;;)
++ fdset_select(fds, -1); // call scheduler
++
++ /* never reached */
++ vbi_del_handler(vbi, event, 0);
++ vbi_close(vbi);
++ exit(0);
++}
+diff -r af23d23c278b util/alevt/alevt.1
+--- /dev/null Thu Jan 01 00:00:00 1970 +0000
++++ b/util/alevt/alevt.1 Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,60 @@
++.TH alevt 1 "February 07, 2010"
++.SH NAME
++alevt \- a teletext browser for analogue and DVB channels.
++.SH SYNOPSIS
++.B alevt
++.RI [ options ]
++.br
++.SH DESCRIPTION
++This manual page documents briefly the
++.B alevt
++commands.
++.PP
++\fBalevt\fP is a program to read teletext from analogue or DVB channels.
++.SH OPTIONS
++.TP
++.B \-c <channel>
++channel name (dvb only)
++.TP
++.B \-ch -child <ppp.ss>
++child window
++.TP
++.B \-cs -charset <latin-1/2/koi8-r/iso8859-7>
++character set
++.TP
++.B \-h -help
++print this page
++.TP
++.B \-o <outfile>
++path + file for all services (dvb only)
++.TP
++.B \-p -parent <ppp.ss>
++parent window
++.TP
++.B \-s -sid <sid>
++service id (dvb only)
++.TP
++.B \-t -ttpid <ttpid>
++teletext pid (dvb only)
++.TP
++.B \-v -vbi <vbidev>
++vbi device
++.TP
++Sequence: /dev/vbi; /dev/vbi0; /dev/video0; /dev/dvb/adapter0/demux0
++.TP
++Order is important! Each page number opens a new window
++with the previously given geometry, device, and display.
++.TP
++ppp.ss stands for a page number and an optional
++subpage number (example: 123.4).
++.TP
++The -child option requires a parent window. So it must
++be preceded by a parent or another child window.
++.TP
++.SH SEE ALSO
++.BR alevt-cap (1), alevt-date (1).
++.br
++.SH AUTHOR
++alevt was written by Edgar Toernig <froese@gmx.de>.
++.PP
++This manual page was written by Uwe Bugla <uwe.bugla@gmx.de>.
+diff -r af23d23c278b util/alevt/alevt.desktop
+--- /dev/null Thu Jan 01 00:00:00 1970 +0000
++++ b/util/alevt/alevt.desktop Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,9 @@
++[Desktop Entry]
++Encoding=UTF-8
++Name=alevt
++Comment=Teletext Browser
++Exec=alevt
++Icon=alevt
++Terminal=false
++Type=Application
++Categories=GNOME;GTK;AudioVideo;Video;
+diff -r af23d23c278b util/alevt/bdf2xbm.c
+--- /dev/null Thu Jan 01 00:00:00 1970 +0000
++++ b/util/alevt/bdf2xbm.c Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,212 @@
++/*
++ Simple program to convert a bdf-font to a bitmap.
++ The characters are arranged in a 32x8 matrix.
++ usage: bdf2xbm [identifier] <bdf >xbm
++ Copyright 1998,1999 by E. Toernig (froese@gmx.de)
++*/
++
++#include <stdio.h>
++#include <string.h>
++#include <stdlib.h>
++#include <ctype.h>
++#include <stdarg.h>
++
++#define not !
++#define streq(a,b) (strcmp((a),(b)) == 0)
++
++int lineno;
++char *word[64];
++int nword;
++
++char *font = "font%dx%d";
++int w, h, bpl;
++unsigned char *bmap;
++
++
++static void error(char *fmt, ...)
++{
++ va_list args;
++
++ va_start(args, fmt);
++ fprintf(stderr, "bdf2xbm");
++ if (lineno)
++ fprintf(stderr, ":%d", lineno);
++ fprintf(stderr, ": ");
++ vfprintf(stderr, fmt, args);
++ fputc('\n', stderr);
++ exit(1);
++}
++
++
++static int nextline()
++{
++ static char buf[256];
++ char *p;
++ int i;
++
++ do
++ {
++ nword = 0;
++ if (fgets(buf, sizeof(buf), stdin) == 0)
++ return nword;
++ lineno++;
++
++ p = buf;
++ for (;;)
++ {
++ while (isspace(*p))
++ p++;
++ if (*p == 0)
++ break;
++ word[nword++] = p;
++ while (*p && not isspace(*p))
++ *p = toupper(*p), p++;
++ if (*p == 0)
++ break;
++ *p++ = 0;
++ }
++ } while (nword == 0);
++
++ for (i = nword; i < 64; ++i)
++ word[i] = "";
++ return nword;
++}
++
++
++static inline void setbit(int ch, int x, int y)
++{
++
++ int yo = ch / 32 * h + y;
++ int xo = ch % 32 * w + x;
++
++ bmap[yo * bpl + xo / 8] |= 1 << (xo % 8);
++}
++
++
++static void dobitmap(int ch, int x, int y)
++{
++ int i, j;
++
++ for (i = 0; i < y; ++i)
++ {
++ nextline();
++ if (nword > 1 || strlen(word[0]) != (x + 7) / 8 * 2)
++ error("bad BITMAP");
++ for (j = 0; j < x; ++j)
++ {
++ int c = word[0][j / 4];
++ if (c >= '0' && c <= '9')
++ c -= '0';
++ else if (c >= 'A' && c <= 'F')
++ c -= 'A' - 10;
++ else
++ error("bad hexchar in BITMAP");
++ if (c & (8 >> (j % 4)))
++ setbit(ch, j, i);
++ }
++ }
++}
++
++
++static void dochar()
++{
++ int ch = -1, x = -1, y = -1;
++
++ while (nextline())
++ {
++ if (streq(word[0], "ENDCHAR"))
++ return;
++ else if (streq(word[0], "ENCODING") && nword == 2)
++ {
++ ch = atoi(word[1]);
++ if (ch < 0 || ch > 255)
++ error("bad character code %d", ch);
++ }
++ else if (streq(word[0], "BBX") && nword == 5)
++ {
++ x = atoi(word[1]), y = atoi(word[2]);
++ if (x < 1 || x > 64 || y < 1 || y > 64)
++ error("bad BBX (%dx%d)", x, y);
++ }
++ else if (streq(word[0], "BITMAP"))
++ {
++ if (x < 0)
++ error("missing BBX");
++ if (ch < 0)
++ error("missing ENDCODING");
++ dobitmap(ch, x, y);
++ }
++ }
++ error("unexpected EOF (missing ENDCHAR)");
++}
++
++
++static void dofile()
++{
++ lineno = 0;
++ w = h = 0;
++ bmap = 0;
++
++ nextline();
++ if (nword != 2 || not streq(word[0], "STARTFONT"))
++ error("not a bdf-file");
++
++ while (nextline())
++ {
++ if (streq(word[0], "ENDFONT"))
++ return;
++ else if (streq(word[0], "FONTBOUNDINGBOX") && nword == 5)
++ {
++ if (bmap)
++ error("multiple FONTBOUNDINGBOXes!?!");
++ w = atoi(word[1]), h = atoi(word[2]);
++ if (w < 1 || w > 64 || h < 1 || h > 64)
++ error("bad bounding box %dx%d\n", w, h);
++ bpl = (w*32+7)/8; // rounding is unnecessary
++ bmap = calloc(1, bpl * h*8);
++ if (bmap == 0)
++ error("out of memory");
++ }
++ else if (streq(word[0], "STARTCHAR"))
++ {
++ if (not bmap)
++ error("no FONTBOUNDINGBOX");
++ dochar();
++ }
++ }
++ error("unexpected EOF (missing ENDFONT)");
++}
++
++
++static void writexbm()
++{
++ char buf[256];
++ int i, j;
++ unsigned char *p = bmap;
++
++ if (not bmap)
++ return;
++
++ sprintf(buf, font, w, h);
++
++ printf("#define %s_width %d\n", buf, 32 * w);
++ printf("#define %s_height %d\n", buf, 8 * h);
++ printf("static unsigned char %s_bits[] = {\n", buf);
++ for (i = 0; i < 16 * h * w / 8; ++i)
++ {
++ for (j = 0; j < 16; ++j)
++ printf("0x%02x,", *p++);
++ printf("\n");
++ }
++ printf("};\n");
++}
++
++
++int main(int argc, char **argv)
++{
++ if (argc > 1)
++ font = argv[1];
++ dofile();
++ writexbm();
++ exit(0);
++}
+diff -r af23d23c278b util/alevt/cache.c
+--- /dev/null Thu Jan 01 00:00:00 1970 +0000
++++ b/util/alevt/cache.c Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,229 @@
++#include <stdlib.h>
++#include <string.h>
++#include "misc.h"
++#include "dllist.h"
++#include "cache.h"
++#include "help.h"
++
++
++static inline int hash(int pgno)
++{
++ // very simple...
++ return pgno % HASH_SIZE;
++}
++
++
++static void do_erc(struct vt_page *ovtp, struct vt_page *nvtp)
++{
++ int l, c;
++
++ if (nvtp->errors == 0 && ovtp->lines == nvtp->lines)
++ return;
++
++ for (l = 0; l < H; ++l)
++ {
++ if (~nvtp->lines & (1 << l))
++ memcpy(nvtp->data[l], ovtp->data[l], W);
++ else if (ovtp->lines & (1 << l))
++ for (c = 0; c < W; ++c)
++ if (nvtp->data[l][c] == BAD_CHAR)
++ nvtp->data[l][c] = ovtp->data[l][c];
++ }
++ nvtp->lines |= ovtp->lines;
++}
++
++
++static void cache_close(struct cache *ca)
++{
++ struct cache_page *cp;
++ int i;
++
++ for (i = 0; i < HASH_SIZE; ++i)
++ while (not dl_empty(ca->hash + i))
++ {
++ cp = PTR ca->hash[i].first;
++ dl_remove(cp->node);
++ free(cp);
++ }
++ free(ca);
++}
++
++
++static void cache_reset(struct cache *ca)
++{
++ struct cache_page *cp, *cpn;
++ int i;
++
++ for (i = 0; i < HASH_SIZE; ++i)
++ for (cp = PTR ca->hash[i].first; cpn = PTR cp->node->next; cp = cpn)
++ if (cp->page->pgno / 256 != 9) // don't remove help pages
++ {
++ dl_remove(cp->node);
++ free(cp);
++ ca->npages--;
++ }
++ memset(ca->hi_subno, 0, sizeof(ca->hi_subno[0]) * 0x900);
++}
++
++/* Get a page from the cache.
++ If subno is SUB_ANY, the newest subpage of that page is returned */
++
++
++static struct vt_page * cache_get(struct cache *ca, int pgno, int subno)
++{
++ struct cache_page *cp;
++ int h = hash(pgno);
++
++ for (cp = PTR ca->hash[h].first; cp->node->next; cp = PTR cp->node->next)
++ if (cp->page->pgno == pgno)
++ if (subno == ANY_SUB || cp->page->subno == subno)
++ {
++ // found, move to front (make it 'new')
++ dl_insert_first(ca->hash + h, dl_remove(cp->node));
++ return cp->page;
++ }
++ return 0;
++}
++
++/* Put a page in the cache.
++ If it's already there, it is updated. */
++
++
++static struct vt_page * cache_put(struct cache *ca, struct vt_page *vtp)
++{
++ struct cache_page *cp;
++ int h = hash(vtp->pgno);
++
++ for (cp = PTR ca->hash[h].first; cp->node->next; cp = PTR cp->node->next)
++ if (cp->page->pgno == vtp->pgno && cp->page->subno == vtp->subno)
++ break;
++
++ if (cp->node->next)
++ {
++ // move to front.
++ dl_insert_first(ca->hash + h, dl_remove(cp->node));
++ if (ca->erc)
++ do_erc(cp->page, vtp);
++ }
++ else
++ {
++ cp = malloc(sizeof(*cp));
++ if (cp == 0)
++ return 0;
++ if (vtp->subno >= ca->hi_subno[vtp->pgno])
++ ca->hi_subno[vtp->pgno] = vtp->subno + 1;
++ ca->npages++;
++ dl_insert_first(ca->hash + h, cp->node);
++ }
++
++ *cp->page = *vtp;
++ return cp->page;
++}
++
++/* Same as cache_get but doesn't make the found entry new */
++
++
++static struct vt_page * cache_lookup(struct cache *ca, int pgno, int subno)
++{
++ struct cache_page *cp;
++ int h = hash(pgno);
++
++ for (cp = PTR ca->hash[h].first; cp->node->next; cp = PTR cp->node->next)
++ if (cp->page->pgno == pgno)
++ if (subno == ANY_SUB || cp->page->subno == subno)
++ return cp->page;
++ return 0;
++}
++
++
++static struct vt_page * cache_foreach_pg(struct cache *ca, int pgno, int subno,
++ int dir, int (*func)(), void *data)
++{
++ struct vt_page *vtp, *s_vtp = 0;
++
++ if (ca->npages == 0)
++ return 0;
++
++ if (vtp = cache_lookup(ca, pgno, subno))
++ subno = vtp->subno;
++ else if (subno == ANY_SUB)
++ subno = dir < 0 ? 0 : 0xffff;
++
++ for (;;)
++ {
++ subno += dir;
++ while (subno < 0 || subno >= ca->hi_subno[pgno])
++ {
++ pgno += dir;
++ if (pgno < 0x100)
++ pgno = 0x9ff;
++ if (pgno > 0x9ff)
++ pgno = 0x100;
++ subno = dir < 0 ? ca->hi_subno[pgno] - 1 : 0;
++ }
++ if (vtp = cache_lookup(ca, pgno, subno))
++ {
++ if (s_vtp == vtp)
++ return 0;
++ if (s_vtp == 0)
++ s_vtp = vtp;
++ if (func(data, vtp))
++ return vtp;
++ }
++ }
++}
++
++
++static int cache_mode(struct cache *ca, int mode, int arg)
++{
++ int res = -1;
++
++ switch (mode)
++ {
++ case CACHE_MODE_ERC:
++ res = ca->erc;
++ ca->erc = arg ? 1 : 0;
++ break;
++ }
++ return res;
++}
++
++
++static struct cache_ops cops =
++{
++ cache_close,
++ cache_get,
++ cache_put,
++ cache_reset,
++ cache_foreach_pg,
++ cache_mode,
++};
++
++
++struct cache * cache_open(void)
++{
++ struct cache *ca;
++ struct vt_page *vtp;
++ int i;
++
++ if (not(ca = malloc(sizeof(*ca))))
++ goto fail1;
++
++ for (i = 0; i < HASH_SIZE; ++i)
++ dl_init(ca->hash + i);
++
++ memset(ca->hi_subno, 0, sizeof(ca->hi_subno));
++ ca->erc = 1;
++ ca->npages = 0;
++ ca->op = &cops;
++
++ for (vtp = help_pages; vtp < help_pages + nr_help_pages; vtp++)
++ cache_put(ca, vtp);
++
++ return ca;
++
++fail2:
++ free(ca);
++fail1:
++ return 0;
++}
+diff -r af23d23c278b util/alevt/cache.h
+--- /dev/null Thu Jan 01 00:00:00 1970 +0000
++++ b/util/alevt/cache.h Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,41 @@
++#ifndef CACHE_H
++#define CACHE_H
++
++#include "vt.h"
++#include "misc.h"
++#include "dllist.h"
++
++#define HASH_SIZE 113
++
++
++struct cache
++{
++ struct dl_head hash[HASH_SIZE];
++ int erc; // error reduction circuit on
++ int npages;
++ u16 hi_subno[0x9ff + 1]; // 0:pg not in cache, 1-3f80:highest subno + 1
++ struct cache_ops *op;
++};
++
++
++struct cache_page
++{
++ struct dl_node node[1];
++ struct vt_page page[1];
++};
++
++
++struct cache_ops
++{
++ void (*close)(struct cache *ca);
++ struct vt_page *(*get)(struct cache *ca, int pgno, int subno);
++ struct vt_page *(*put)(struct cache *ca, struct vt_page *vtp);
++ void (*reset)(struct cache *ca);
++ struct vt_page *(*foreach_pg)(struct cache *ca, int pgno, int subno, int dir,
++ int (*func)(), void *data);
++ int (*mode)(struct cache *ca, int mode, int arg);
++};
++
++struct cache *cache_open(void);
++#define CACHE_MODE_ERC 1
++#endif
+diff -r af23d23c278b util/alevt/dllist.h
+--- /dev/null Thu Jan 01 00:00:00 1970 +0000
++++ b/util/alevt/dllist.h Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,55 @@
++#ifndef DLLIST_H
++#define DLLIST_H
++
++
++struct dl_node
++{
++ struct dl_node *next;
++ struct dl_node *prev;
++};
++
++
++struct dl_head
++{
++ struct dl_node *first;
++ struct dl_node *null;
++ struct dl_node *last;
++};
++
++
++static inline struct dl_head * dl_init(struct dl_head *h)
++{
++ h->first = (struct dl_node *)&h->null;
++ h->null = 0;
++ h->last = (struct dl_node *)&h->first;
++ return h;
++}
++
++
++static inline struct dl_node * dl_remove(struct dl_node *n)
++{
++ n->prev->next = n->next;
++ n->next->prev = n->prev;
++ return n;
++}
++
++
++static inline struct dl_node *
++ dl_insert_after(struct dl_node *p, struct dl_node *n)
++{
++ n->next = p->next;
++ n->prev = p;
++ p->next = n;
++ n->next->prev = n;
++ return n;
++}
++
++#define dl_empty(h) ((h)->first->next == 0)
++#define dl_insert_before(p, n) dl_insert_after((p)->prev, (n))
++#define dl_insert_first(h, n) ({ struct dl_node *_n = (n); \
++ dl_insert_before((h)->first, _n); })
++#define dl_insert_last(h, n) ({ struct dl_node *_n = (n); \
++ dl_insert_after((h)->last, _n); })
++#define dl_remove_first(h) dl_remove((h)->first) // mustn't be empty!
++#define dl_remove_last(h) dl_remove((h)->last) // mustn't be empty!
++#endif
+diff -r af23d23c278b util/alevt/exp-gfx.c
+--- /dev/null Thu Jan 01 00:00:00 1970 +0000
++++ b/util/alevt/exp-gfx.c Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,258 @@
++/* Copyright 1999 by Paul Ortyl <ortylp@from.pl> */
++
++#include <stdio.h>
++#include <stdlib.h>
++#include <string.h>
++#include "lang.h"
++#include "export.h"
++#include "font.h"
++#define WW (W*CW) /* pixel width of window */
++#define WH (H*CH) /* pixel hegiht of window */
++
++
++static inline void draw_char(unsigned char * colour_matrix, int fg, int bg,
++ int c, int dbl, int _x, int _y, int sep)
++{
++ int x,y;
++ unsigned char* src= (latin1==LATIN1 ? font1_bits : font2_bits);
++ int dest_x=_x*CW;
++ int dest_y=_y*CH;
++
++ for(y=0;y<(CH<<dbl); y++)
++ {
++ for(x=0;x<CW; x++)
++ {
++ int bitnr, bit, maskbitnr, maskbit;
++ bitnr=(c/32*CH + (y>>dbl))*CW*32+ c%32*CW +x;
++ bit=(*(src+bitnr/8))&(1<<bitnr%8);
++ if (sep)
++ {
++ maskbitnr=(0xa0/32*CH + (y>>dbl))*CW*32+ 0xa0%32*CW +x;
++ maskbit=(*(src+maskbitnr/8))&(1<<maskbitnr%8);
++ *(colour_matrix+WW*(dest_y+y)+dest_x+x)=
++ (char)((bit && (!maskbit)) ? fg : bg);
++ }
++ else
++ *(colour_matrix+WW*(dest_y+y)+dest_x+x)=
++ (char)(bit ? fg : bg);
++ }
++ }
++ return;
++}
++
++
++static void prepare_colour_matrix(/*struct export *e,*/
++ struct fmt_page *pg,
++ unsigned char *colour_matrix)
++{
++ int x, y;
++ for (y = 0; y < H; ++y)
++ {
++ for (x = 0; x < W; ++x)
++ {
++ if (pg->dbl & (1<<(y-1)))
++ {
++ if (pg->data[y-1][x].attr & EA_HDOUBLE)
++ draw_char(colour_matrix, pg->data[y][x].fg,
++ pg->data[y][x].bg, pg->data[y][x].ch,
++ (0),
++ x, y,
++ ((pg->data[y][x].attr & EA_SEPARATED) ? 1 : 0)
++ );
++ }
++ else
++ {
++ draw_char(colour_matrix, pg->data[y][x].fg,
++ pg->data[y][x].bg, pg->data[y][x].ch,
++ ((pg->data[y][x].attr & EA_DOUBLE) ? 1 : 0),
++ x, y,
++ ((pg->data[y][x].attr & EA_SEPARATED) ? 1 : 0)
++ );
++ }
++ }
++ }
++ return;
++}
++
++
++static int ppm_output(struct export *e, char *name, struct fmt_page *pg);
++
++struct export_module export_ppm = // exported module definition
++{
++ "ppm", // id
++ "ppm", // extension
++ 0, // options
++ 0, // size
++ 0, // open
++ 0, // close
++ 0, // option
++ ppm_output // output
++};
++
++
++static int ppm_output(struct export *e, char *name, struct fmt_page *pg)
++{
++ FILE *fp;
++ long n;
++ static u8 rgb1[][3]={{0,0,0},
++ {1,0,0},
++ {0,1,0},
++ {1,1,0},
++ {0,0,1},
++ {1,0,1},
++ {0,1,1},
++ {1,1,1}};
++ unsigned char *colour_matrix;
++
++ if (!(colour_matrix=malloc(WH*WW)))
++ {
++ export_error("cannot allocate memory");
++ return 0;
++ }
++
++ prepare_colour_matrix(/*e,*/ pg, (unsigned char *)colour_matrix);
++ if (not(fp = fopen(name, "w")))
++ {
++ free(colour_matrix);
++ export_error("cannot create file");
++ return -1;
++ }
++ fprintf(fp,"P6 %d %d 1\n", WW, WH);
++
++ for(n=0;n<WH*WW;n++)
++ {
++ if (!fwrite(rgb1[(int) *(colour_matrix+n)], 3, 1, fp))
++ {
++ export_error("error while writting to file");
++ free(colour_matrix);
++ fclose(fp);
++ return -1;
++ }
++ }
++ free(colour_matrix);
++ fclose(fp);
++ return 0;
++}
++
++
++#ifdef WITH_PNG
++
++#include <png.h>
++static int png_open(struct export *e);
++static int png_option(struct export *e, int opt, char *arg);
++static int png_output(struct export *e, char *name, struct fmt_page *pg);
++static char *png_opts[] = // module options
++{
++ "compression=<0-9>", // set compression level
++ 0
++};
++
++struct png_data // private data in struct export
++{
++ int compression;
++};
++
++struct export_module export_png = // exported module definition
++{
++ "png", // id
++ "png", // extension
++ png_opts, // options
++ sizeof(struct png_data), // size
++ png_open, // open
++ 0, // close
++ png_option, // option
++ png_output // output
++};
++
++#define D ((struct png_data *)e->data)
++
++
++static int png_open(struct export *e)
++{
++ D->compression = Z_DEFAULT_COMPRESSION;
++ return 0;
++}
++
++
++static int png_option(struct export *e, int opt, char *arg)
++{
++ switch (opt)
++ {
++ case 1: // compression=
++ if (*arg >= '0' && *arg <= '9')
++ D->compression = *arg - '0';
++ break;
++ }
++ return 0;
++}
++
++
++static int png_output(struct export *e, char *name, struct fmt_page *pg)
++{
++ FILE *fp;
++ int x;
++ png_structp png_ptr;
++ png_infop info_ptr;
++ png_byte *row_pointers[WH];
++ static u8 rgb8[][3]={{ 0, 0, 0},
++ {255, 0, 0},
++ { 0,255, 0},
++ {255,255, 0},
++ { 0, 0,255},
++ {255, 0,255},
++ { 0,255,255},
++ {255,255,255}};
++ unsigned char *colour_matrix;
++
++ if (!(colour_matrix=malloc(WH*WW)))
++ {
++ export_error("cannot allocate memory");
++ return -1;
++ }
++ prepare_colour_matrix(/*e,*/ pg, (unsigned char *)colour_matrix);
++ if (not(fp = fopen(name, "w")))
++ {
++ free(colour_matrix);
++ export_error("cannot create file");
++ return -1;
++ }
++ png_ptr = png_create_write_struct(PNG_LIBPNG_VER_STRING,
++ NULL, NULL, NULL);
++ if (!png_ptr)
++ {
++ free(colour_matrix);
++ fclose(fp);
++ export_error("libpng init error");
++ return -1;
++ }
++ info_ptr = png_create_info_struct(png_ptr);
++ if (!info_ptr)
++ {
++ png_destroy_write_struct(&png_ptr,
++ (png_infopp)NULL);
++ free(colour_matrix);
++ fclose(fp);
++ export_error("libpng init error");
++ return -1;
++ }
++ png_init_io(png_ptr, fp);
++ png_set_compression_level(png_ptr, D->compression);
++ png_set_compression_mem_level(png_ptr, 9);
++ png_set_compression_window_bits(png_ptr, 15);
++ png_set_IHDR(png_ptr, info_ptr, WW, WH,
++ 8, PNG_COLOR_TYPE_PALETTE , PNG_INTERLACE_NONE,
++ PNG_COMPRESSION_TYPE_DEFAULT, PNG_FILTER_TYPE_DEFAULT);
++ png_set_PLTE(png_ptr, info_ptr,(png_color*) rgb8 , 8);
++ png_write_info(png_ptr, info_ptr);
++ for(x=0; x<WH; x++)
++ { row_pointers[x]=colour_matrix+x*WW; }
++ png_write_image(png_ptr, row_pointers);
++ png_write_end(png_ptr, info_ptr);
++ png_destroy_write_struct(&png_ptr, &info_ptr);
++ free(colour_matrix);
++ fclose(fp);
++ return 0;
++}
++
++#endif
++
+diff -r af23d23c278b util/alevt/exp-html.c
+--- /dev/null Thu Jan 01 00:00:00 1970 +0000
++++ b/util/alevt/exp-html.c Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,299 @@
++/* Copyright 1999 by Paul Ortyl <ortylp@from.pl> */
++
++#include <stdio.h>
++#include <string.h>
++#include "lang.h"
++#include "export.h"
++
++static int html_open(struct export *e);
++static int html_option(struct export *e, int opt, char *arg);
++static int html_output(struct export *e, char *name, struct fmt_page *pg);
++static char *html_opts[] = // module options
++{
++ "gfx-chr=<char>", // substitute <char> for gfx-symbols
++ "bare", // no headers
++ 0
++};
++
++struct html_data // private data in struct export
++{
++ u8 gfx_chr;
++ u8 bare;
++};
++
++
++struct export_module export_html = // exported module definition
++{
++ "html", // id
++ "html", // extension
++ html_opts, // options
++ sizeof(struct html_data), // size
++ html_open, // open
++ 0, // close
++ html_option, // option
++ html_output // output
++};
++
++#define D ((struct html_data *)e->data)
++
++
++static int html_open(struct export *e)
++{
++ D->gfx_chr = '#';
++ D->bare = 0;
++ //e->reveal=1; // the default should be the same for all formats.
++ return 0;
++}
++
++
++static int html_option(struct export *e, int opt, char *arg)
++{
++ switch (opt)
++ {
++ case 1: // gfx-chr=
++ D->gfx_chr = *arg ?: ' ';
++ break;
++ case 2: // bare (no headers)
++ D->bare=1;
++ break;
++ }
++ return 0;
++}
++
++#define HTML_BLACK "#000000"
++#define HTML_RED "#FF0000"
++#define HTML_GREEN "#00FF00"
++#define HTML_YELLOW "#FFFF00"
++#define HTML_BLUE "#0000FF"
++#define HTML_MAGENTA "#FF00FF"
++#define HTML_CYAN "#00FFFF"
++#define HTML_WHITE "#FFFFFF"
++
++#undef UNREADABLE_HTML //no '\n'
++#define STRIPPED_HTML //only necessary fields in header
++
++static int html_output(struct export *e, char *name, struct fmt_page *pg)
++{
++
++ const char* html_colours[]={ HTML_BLACK,
++ HTML_RED,
++ HTML_GREEN,
++ HTML_YELLOW,
++ HTML_BLUE,
++ HTML_MAGENTA,
++ HTML_CYAN,
++ HTML_WHITE};
++ FILE *fp;
++ int x, y;
++
++#ifdef UNREADABLE_HTML
++#define HTML_NL
++#else
++#define HTML_NL fputc('\n',fp);
++#endif
++
++ if (not(fp = fopen(name, "w")))
++ {
++ export_error("cannot create file");
++ return -1;
++ }
++
++if (!D->bare)
++ {
++#ifndef STRIPPED_HTML
++ fputs("<!doctype html public \"-//w3c//dtd html 4.0 transitional//en\">",fp);
++ HTML_NL
++#endif
++ fputs("<html><head>",fp);
++ HTML_NL
++#ifndef STRIPPED_HTML
++ fputs("<meta http-equiv=\"Content-Type\" content=\"text/html;",fp);
++ switch(latin1) {
++ case LATIN1: fprintf(fp,"charset=iso-8859-1\">"); break;
++ case LATIN2: fprintf(fp,"charset=iso-8859-2\">"); break;
++ case KOI8: fprintf(fp,"charset=koi8-r\">"); break;
++ case GREEK: fprintf(fp,"charset=iso-8859-7\">"); break;
++ }
++ HTML_NL
++ fputs("<meta name=\"GENERATOR\" content=\"alevt-cap\">",fp);
++ HTML_NL
++#else
++ switch(latin1) {
++ case LATIN1: fprintf(fp,"<meta charset=iso-8859-1\">"); break;
++ case LATIN2: fprintf(fp,"<meta charset=iso-8859-2\">"); break;
++ case KOI8: fprintf(fp,"<meta charset=koi8-r\">"); break;
++ case GREEK: fprintf(fp,"<meta charset=iso-8859-7\">"); break;
++ }
++ HTML_NL
++#endif
++ fputs("</head>",fp);
++ fputs("<body text=\"#FFFFFF\" bgcolor=\"#000000\">",fp);
++ HTML_NL
++ } //bare
++
++ fputs("<tt><b>",fp);
++ HTML_NL
++
++ // write tables in form of HTML format
++ for (y = 0; y < 25; ++y)
++ {
++ int last_nonblank=0;
++ int first_unprinted=0;
++ int last_space=1;
++ // previous char was &nbsp;
++ // is used for deciding to put semicolon or not
++ int nbsp=0;
++
++ // for output filled with ' ' up to 40 chars
++ // set last_nonblank=39
++ for (x = 0 ; x < 40; ++x)
++ {
++ if (pg->data[y][x].attr & EA_GRAPHIC)
++ {pg->data[y][x].ch= D->gfx_chr;}
++
++ if (pg->data[y][x].ch!=' ')
++ {
++ last_nonblank=x;
++ }
++ }
++
++ for (x = 0 ; x <= last_nonblank ; ++x)
++ {
++ if (pg->data[y][x].ch==' ')
++ {
++ // if single space between blinking/colour words
++ // then make the space blinking/colour too
++ if ((x)&&(x<39))
++ {
++ if ((pg->data[y][x-1].ch!=' ')
++ &&(pg->data[y][x+1].ch!=' ')
++ &&(pg->data[y][x-1].attr & EA_BLINK)
++ &&(pg->data[y][x+1].attr & EA_BLINK))
++ {pg->data[y][x].attr |= EA_BLINK;}
++ else
++ {pg->data[y][x].attr &= ~EA_BLINK;}
++
++ if ((pg->data[y][x-1].ch!=' ')
++ &&(pg->data[y][x+1].ch!=' ')
++ &&(pg->data[y][x-1].fg==pg->data[y][x+1].fg))
++ {pg->data[y][x].fg=pg->data[y][x-1].fg;}
++ else
++ pg->data[y][x].fg=7;
++ }
++ else
++ {
++ pg->data[y][x].attr &= ~EA_BLINK;
++ pg->data[y][x].fg=7;
++ }
++ }
++ else
++ {
++ // if foreground is black set the foreground to previous
++ // background colour to let it be visible
++ if (!pg->data[y][x].fg)
++ {pg->data[y][x].fg=pg->data[y][x].bg;}
++ }
++ //check if attributes changed,
++ //if yes then print chars and update first_unprinted
++ //if not then go to next char
++ if (x)
++ {
++ if (((
++ (pg->data[y][x].attr & EA_BLINK)
++ ==
++ (pg->data[y][x-1].attr & EA_BLINK)
++ )
++ &&
++ (
++ pg->data[y][x].fg == pg->data[y][x-1].fg
++ ))
++ &&(x!=last_nonblank))
++
++ { continue; }
++ }
++ else continue;
++
++ {
++ int z=first_unprinted;
++ for(;(pg->data[y][z].ch==' ') && (z<x);z++)
++ {
++ if (last_space)
++ {
++ fprintf(fp,"&nbsp");
++ last_space=0;
++ nbsp=1;
++ }
++ else
++ {
++ fputc(' ',fp);
++ last_space=1;
++ nbsp=0;
++ }
++ }
++
++ first_unprinted=z;
++
++ if (z==x) continue;
++
++ if (pg->data[y][first_unprinted].attr & EA_BLINK)
++ {
++ fprintf(fp,"<blink>");
++ nbsp=0;
++ }
++
++ if (pg->data[y][first_unprinted].fg!=7)
++ {
++ fprintf(fp,"<font color=\"%s\">",
++ html_colours[pg->data[y][first_unprinted].fg]);
++ nbsp=0;
++ }
++ for(;(z<x)||(z==last_nonblank);z++)
++ {
++
++ if (pg->data[y][z].ch==' ')
++ {
++ for(;(pg->data[y][z].ch==' ') && (z<x);z++)
++ {
++ if (last_space)
++ {
++ fprintf(fp,"&nbsp");
++ last_space=0;
++ nbsp=1;
++ }
++ else
++ {
++ fputc(' ',fp);
++ last_space=1;
++ nbsp=0;
++ }
++ }
++ z--;
++ }
++ else
++ {
++ //if previous nbsp --> put semicolon!!!
++ if (nbsp) fputc(';',fp);
++ fputc(pg->data[y][z].ch,fp);
++ last_space=0;
++ nbsp=0;
++ }
++ }
++ if (pg->data[y][first_unprinted].fg!=7)
++ {
++ fprintf(fp,"</font>");
++ }
++ if (pg->data[y][first_unprinted].attr & EA_BLINK)
++ fprintf(fp,"</blink>");
++
++ first_unprinted=z;
++ }
++ }
++ fputs("<br>",fp);
++ HTML_NL
++ }
++ fputs("</b></tt>",fp);
++ if (!D->bare)
++ fputs("</body></html>",fp);
++ fclose(fp);
++ return 0;
++}
+diff -r af23d23c278b util/alevt/exp-txt.c
+--- /dev/null Thu Jan 01 00:00:00 1970 +0000
++++ b/util/alevt/exp-txt.c Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,226 @@
++#include <stdio.h>
++#include <string.h>
++#include <stdlib.h>
++#include "os.h"
++#include "export.h"
++
++static int txt_open(struct export *e);
++static int txt_option(struct export *e, int opt, char *arg);
++static int txt_output(struct export *e, char *name, struct fmt_page *pg);
++static char *txt_opts[] = // module options
++{
++ "color", // generate ansi color codes (and attributes)
++ "gfx-chr=<char>", // substitute <char> for gfx-symbols
++ "fg=<0-7|none>", // assume term has <x> as foreground color
++ "bg=<0-7|none>", // assume term has <x> as background color
++ "lines=<1-25>", // output 24 or 25 lines
++ 0
++};
++
++
++struct txt_data // private data in struct export
++{
++ u8 color;
++ u8 gfx_chr;
++ u8 def_fg;
++ u8 def_bg;
++ int endline;
++ struct fmt_char curr[1];
++ FILE *fp;
++};
++
++
++struct export_module export_txt = // exported module definition
++{
++ "ascii", // id
++ "txt", // extension
++ txt_opts, // options
++ sizeof(struct txt_data), // data size
++ txt_open, // open
++ 0, // close
++ txt_option, // option
++ txt_output, // output
++};
++
++
++struct export_module export_ansi = // exported module definition
++{
++ "ansi", // id
++ "txt", // extension
++ txt_opts, // options
++ sizeof(struct txt_data), // data size
++ txt_open, // open
++ 0, // close
++ txt_option, // option
++ txt_output, // output
++};
++
++#define D ((struct txt_data *)e->data)
++
++
++char * my_stpcpy(char *dst, const char *src)
++{
++ while (*dst = *src++)
++ dst++;
++ return dst;
++}
++
++
++static int txt_open(struct export *e)
++{
++ D->gfx_chr = '#';
++ D->def_fg = -1;
++ D->def_bg = -1;
++ D->endline = H;
++ if (e->mod == &export_ansi)
++ D->color = 1;
++ return 0;
++}
++
++
++static int txt_option(struct export *e, int opt, char *arg)
++{
++ switch (opt)
++ {
++ case 1: // color
++ D->color = 1;
++ break;
++ case 2: // gfx-chr=
++ D->gfx_chr = *arg ?: ' ';
++ break;
++ case 3: // fg=
++ D->def_fg = *arg - '0';
++ break;
++ case 4: // bg=
++ D->def_bg = *arg - '0';
++ break;
++ case 5: // lines=
++ D->endline = atoi(arg);
++ if (D->endline < 1 || D->endline > H)
++ {
++ export_error("lines: invalid number");
++ return 1;
++ }
++ }
++ return 0;
++}
++
++
++static void put_attr(struct export *e, struct fmt_char *new)
++{
++ char buf[512];
++ char *p = buf;
++ int fg, bg, attr;
++ int reset = 0;
++
++ if (D->color)
++ {
++ fg = D->curr->fg ^ new->fg;
++ bg = D->curr->bg ^ new->bg;
++ attr = (D->curr->attr ^ new->attr) & (EA_BLINK | EA_DOUBLE);
++
++ if (fg | bg | attr)
++ {
++ if (~new->attr & attr) // reset some attributes -> reset all.
++ reset = 1;
++ if (fg && new->fg == D->def_fg) // switch to def fg -> reset all
++ reset = 1;
++ if (bg && new->bg == D->def_bg) // switch to def bg -> reset all
++ reset = 1;
++
++ p = my_stpcpy(buf, "\e[");
++ if (reset)
++ {
++ p = my_stpcpy(p, ";"); // "0;" but 0 isn't neccesary
++ attr = -1; // set all attributes
++ fg = new->fg ^ D->def_fg; // set fg if != default fg
++ bg = new->bg ^ D->def_bg; // set bg if != default bg
++ }
++ if (attr & new->attr & EA_BLINK)
++ p = my_stpcpy(p, "5;"); // blink
++ if (attr & new->attr & EA_DOUBLE)
++ p = my_stpcpy(p, "1;"); // bold
++ if (fg)
++ p += sprintf(p, "%d;", new->fg + 30); // fg-color
++ if (bg)
++ p += sprintf(p, "%d;", new->bg + 40); // bg-color
++ p[-1] = 'm'; // replace last ;
++ *D->curr = *new;
++ }
++ }
++ *p++ = new->ch;
++ *p = 0;
++ fputs(buf, D->fp);
++}
++
++
++static int txt_output(struct export *e, char *name, struct fmt_page *pg)
++{
++ struct fmt_char def_c[1];
++ struct fmt_char l[W+2];
++ #define L (l+1)
++ int x, y;
++
++ D->fp = fopen(name, "w");
++ if (not D->fp)
++ {
++ export_error("cannot create file");
++ return -1;
++ }
++
++ /* initialize default colors. These have to be restored at EOL. */
++ def_c->ch = '\n';
++ def_c->fg = D->def_fg;
++ def_c->bg = D->def_bg;
++ def_c->attr = E_DEF_ATTR;
++ *D->curr = *def_c;
++ L[-1] = L[W] = *def_c;
++
++ for (y = 0; y < D->endline; y++)
++ if (~pg->hid & (1 << y)) // not hidden
++ {
++ // character conversion
++ for (x = 0; x < W; ++x)
++ {
++ struct fmt_char c = pg->data[y][x];
++
++ switch (c.ch)
++ {
++ case 0x00: case 0xa0: c.ch = ' '; break;
++ case 0x7f: c.ch = '*'; break;
++ case BAD_CHAR: c.ch = '?'; break;
++ default:
++ if (c.attr & EA_GRAPHIC)
++ c.ch = D->gfx_chr;
++ break;
++ }
++ L[x] = c;
++ }
++
++ if (D->color)
++ {
++ // optimize color and attribute changes
++ // delay fg and attr changes as far as possible
++ for (x = 0; x < W; ++x)
++ if (L[x].ch == ' ')
++ {
++ L[x].fg = L[x-1].fg;
++ l[x].attr = L[x-1].attr;
++ }
++
++ // move fg and attr changes to prev bg change point
++ for (x = W-1; x >= 0; x--)
++ if (L[x].ch == ' ' && L[x].bg == L[x+1].bg)
++ {
++ L[x].fg = L[x+1].fg;
++ L[x].attr = L[x+1].attr;
++ }
++ }
++
++ // now emit the whole line (incl EOL)
++ for (x = 0; x < W+1; ++x)
++ put_attr(e, L + x);
++ }
++ fclose(D->fp);
++ return 0;
++}
+diff -r af23d23c278b util/alevt/export.c
+--- /dev/null Thu Jan 01 00:00:00 1970 +0000
++++ b/util/alevt/export.c Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,364 @@
++#include <stdarg.h>
++#include <stdlib.h>
++#include <stdio.h>
++#include <string.h>
++#include "vt.h"
++#include "misc.h"
++#include "export.h"
++
++extern struct export_module export_txt;
++extern struct export_module export_ansi;
++extern struct export_module export_html;
++extern struct export_module export_png;
++extern struct export_module export_ppm;
++struct export_module *modules[] =
++{
++ &export_txt,
++ &export_ansi,
++ &export_html,
++ &export_ppm,
++#ifdef WITH_PNG
++ &export_png,
++#endif
++ 0
++};
++
++
++static char *glbl_opts[] =
++{
++ "reveal", // show hidden text
++ "hide", // don't show hidden text (default)
++ 0
++};
++
++static char errbuf[64];
++
++
++void export_error(char *str, ...)
++{
++ va_list args;
++
++ va_start(args, str);
++ vsnprintf(errbuf, sizeof(errbuf)-1, str, args);
++}
++
++
++char * export_errstr(void)
++{
++ return errbuf;
++}
++
++
++static int find_opt(char **opts, char *opt, char *arg)
++{
++ int err = 0;
++ char buf[256];
++ char **oo, *o, *a;
++
++ if (oo = opts)
++ while (o = *oo++)
++ {
++ if (a = strchr(o, '='))
++ {
++ a = buf + (a - o);
++ o = strcpy(buf, o);
++ *a++ = 0;
++ }
++ if (strcasecmp(o, opt) == 0)
++ {
++ if ((a != 0) == (arg != 0))
++ return oo - opts;
++ err = -1;
++ }
++ }
++ return err;
++}
++
++
++struct export * export_open(char *fmt)
++{
++ struct export_module **eem, *em;
++ struct export *e;
++ char *opt, *optend, *optarg;
++ int opti;
++
++ if (fmt = strdup(fmt))
++ {
++ if (opt = strchr(fmt, ','))
++ *opt++ = 0;
++ for (eem = modules; em = *eem; eem++)
++ if (strcasecmp(em->fmt_name, fmt) == 0)
++ break;
++ if (em)
++ {
++ if (e = malloc(sizeof(*e) + em->local_size))
++ {
++ e->mod = em;
++ e->fmt_str = fmt;
++ e->reveal = 0;
++ memset(e + 1, 0, em->local_size);
++ if (not em->open || em->open(e) == 0)
++ {
++ for (; opt; opt = optend)
++ {
++ if (optend = strchr(opt, ','))
++ *optend++ = 0;
++ if (not *opt)
++ continue;
++ if (optarg = strchr(opt, '='))
++ *optarg++ = 0;
++ if ((opti = find_opt(glbl_opts, opt, optarg)) > 0)
++ {
++ if (opti == 1) // reveal
++ e->reveal = 1;
++ else if (opti == 2) // hide
++ e->reveal = 0;
++ }
++ else if (opti == 0 &&
++ (opti = find_opt(em->options, opt, optarg)) > 0)
++ {
++ if (em->option(e, opti, optarg))
++ break;
++ }
++ else
++ {
++ if (opti == 0)
++ export_error("%s: unknown option", opt);
++ else if (optarg)
++ export_error("%s: takes no arg", opt);
++ else
++ export_error("%s: missing arg", opt);
++ break;
++ }
++ }
++ if (opt == 0)
++ return e;
++
++ if (em->close)
++ em->close(e);
++ }
++ free(e);
++ }
++ else
++ export_error("out of memory");
++ }
++ else
++ export_error("unknown format: %s", fmt);
++ free(fmt);
++ }
++ else
++ export_error("out of memory");
++ return 0;
++}
++
++
++void export_close(struct export *e)
++{
++ if (e->mod->close)
++ e->mod->close(e);
++ free(e->fmt_str);
++ free(e);
++}
++
++
++static char * hexnum(char *buf, unsigned int num)
++{
++ char *p = buf + 5;
++
++ num &= 0xffff;
++ *--p = 0;
++ do
++ {
++ *--p = "0123456789abcdef"[num % 16];
++ num /= 16;
++ } while (num);
++ return p;
++}
++
++
++static char * adjust(char *p, char *str, char fill, int width)
++{
++ int l = width - strlen(str);
++
++ while (l-- > 0)
++ *p++ = fill;
++ while (*p = *str++)
++ p++;
++ return p;
++}
++
++
++char * export_mkname(struct export *e, char *fmt, struct vt_page *vtp, char *usr)
++{
++ char bbuf[1024];
++ char *p = bbuf;
++
++ while (*p = *fmt++)
++ if (*p++ == '%')
++ {
++ char buf[32], buf2[32];
++ int width = 0;
++
++ p--;
++ while (*fmt >= '0' && *fmt <= '9')
++ width = width*10 + *fmt++ - '0';
++
++ switch (*fmt++)
++ {
++ case '%':
++ p = adjust(p, "%", '%', width);
++ break;
++ case 'e': // extension
++ p = adjust(p, e->mod->extension, '.', width);
++ break;
++ case 'p': // pageno[.subno]
++ if (vtp->subno)
++ p = adjust(p,strcat(strcat(hexnum(buf, vtp->pgno),
++ "."), hexnum(buf2, vtp->subno)), ' ', width);
++ else
++ p = adjust(p, hexnum(buf, vtp->pgno), ' ', width);
++ break;
++ case 'S': // subno
++ p = adjust(p, hexnum(buf, vtp->subno), '0', width);
++ break;
++ case 'P': // pgno
++ p = adjust(p, hexnum(buf, vtp->pgno), '0', width);
++ break;
++ case 's': // user strin
++ p = adjust(p, usr, ' ', width);
++ break;
++ //TODO: add date, channel name, ...
++ }
++ }
++ p = strdup(bbuf);
++ if (not p)
++ export_error("out of memory");
++ return p;
++}
++
++
++static void fmt_page(struct export *e, struct fmt_page *pg, struct vt_page *vtp)
++{
++ char buf[16];
++ int x, y;
++ u8 *p = vtp->data[0];
++
++ pg->dbl = 0;
++
++ sprintf(buf, "\2%x.%02x\7", vtp->pgno, vtp->subno & 0xff);
++
++ for (y = 0; y < H; y++)
++ {
++ struct fmt_char c;
++ int last_ch = ' ';
++ int dbl = 0, hold = 0;
++
++ c.fg = 7;
++ c.bg = 0;
++ c.attr = 0;
++
++ for (x = 0; x < W; ++x)
++ {
++ c.ch = *p++;
++ if (y == 0 && x < 8)
++ c.ch = buf[x];
++ switch (c.ch)
++ {
++ case 0x00 ... 0x07: /* alpha + fg color */
++ c.fg = c.ch & 7;
++ c.attr &= ~(EA_GRAPHIC | EA_CONCEALED);
++ goto ctrl;
++ case 0x08: /* flash */
++ c.attr |= EA_BLINK;
++ goto ctrl;
++ case 0x09: /* steady */
++ c.attr &= ~EA_BLINK;
++ goto ctrl;
++ case 0x0a: /* end box */
++ case 0x0b: /* start box */
++ goto ctrl;
++ case 0x0c: /* normal height */
++ c.attr &= EA_DOUBLE;
++ goto ctrl;
++ case 0x0d: /* double height */
++ if (y < H-2) /* ignored on last 2 lines */
++ {
++ c.attr |= EA_DOUBLE;
++ dbl = 1;
++ }
++ goto ctrl;
++ case 0x10 ... 0x17: /* gfx + fg color */
++ c.fg = c.ch & 7;
++ c.attr |= EA_GRAPHIC;
++ c.attr &= ~EA_CONCEALED;
++ goto ctrl;
++ case 0x18: /* conceal */
++ c.attr |= EA_CONCEALED;
++ goto ctrl;
++ case 0x19: /* contiguous gfx */
++ c.attr &= ~EA_SEPARATED;
++ goto ctrl;
++ case 0x1a: /* separate gfx */
++ c.attr |= EA_SEPARATED;
++ goto ctrl;
++ case 0x1c: /* black bg */
++ c.bg = 0;
++ goto ctrl;
++ case 0x1d: /* new bg */
++ c.bg = c.fg;
++ goto ctrl;
++ case 0x1e: /* hold gfx */
++ hold = 1;
++ goto ctrl;
++ case 0x1f: /* release gfx */
++ hold = 0;
++ goto ctrl;
++
++ case 0x0e: /* SO */
++ case 0x0f: /* SI */
++ case 0x1b: /* ESC */
++ c.ch = ' ';
++ break;
++
++ ctrl:
++ c.ch = ' ';
++ if (hold && (c.attr & EA_GRAPHIC))
++ c.ch = last_ch;
++ break;
++ }
++ if (c.attr & EA_GRAPHIC)
++ if ((c.ch & 0xa0) == 0x20)
++ {
++ last_ch = c.ch;
++ c.ch += (c.ch & 0x40) ? 32 : -32;
++ }
++ if (c.attr & EA_CONCEALED)
++ if (not e->reveal)
++ c.ch = ' ';
++ pg->data[y][x] = c;
++ }
++ if (dbl)
++ {
++ pg->dbl |= 1 << y;
++ for (x = 0; x < W; ++x)
++ {
++ if (~pg->data[y][x].attr & EA_DOUBLE)
++ pg->data[y][x].attr |= EA_HDOUBLE;
++ pg->data[y+1][x] = pg->data[y][x];
++ pg->data[y+1][x].ch = ' ';
++ }
++ y++;
++ p += W;
++ }
++ }
++ pg->hid = pg->dbl << 1;
++}
++
++
++int export(struct export *e, struct vt_page *vtp, char *name)
++{
++ struct fmt_page pg[1];
++
++ fmt_page(e, pg, vtp);
++ return e->mod->output(e, name, pg);
++}
+diff -r af23d23c278b util/alevt/export.h
+--- /dev/null Thu Jan 01 00:00:00 1970 +0000
++++ b/util/alevt/export.h Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,66 @@
++#ifndef EXPORT_H
++#define EXPORT_H
++
++#include "vt.h"
++#include "misc.h"
++
++
++struct fmt_char
++{
++ u8 ch, fg, bg, attr;
++};
++
++#define EA_DOUBLE 1 // double height char
++#define EA_HDOUBLE 2 // single height char in double height line
++#define EA_BLINK 4 // blink
++#define EA_CONCEALED 8 // concealed
++#define EA_GRAPHIC 16 // graphic symbol
++#define EA_SEPARATED 32 // use separated graphic symbol
++
++#define E_DEF_FG 7
++#define E_DEF_BG 0
++#define E_DEF_ATTR 0
++
++
++struct fmt_page
++{
++ struct vt_page *vtp;
++ u32 dbl, hid;
++ struct fmt_char data[H][W];
++};
++
++
++struct export
++{
++ struct export_module *mod; // module type
++ char *fmt_str; // saved option string (splitted)
++ // global options
++ int reveal; // reveal hidden chars
++ // local data for module's use. initialized to 0.
++ struct { int dummy; } data[0];
++};
++
++
++struct export_module
++{
++ char *fmt_name; // the format type name (ASCII/HTML/PNG/...)
++ char *extension; // the default file name extension
++ char **options; // module options
++ int local_size;
++ int (*open)(struct export *fmt);
++ void (*close)(struct export *fmt);
++ int (*option)(struct export *fmt, int opt, char *arg);
++ int (*output)(struct export *fmt, char *name, struct fmt_page *pg);
++};
++
++
++extern struct export_module *modules[]; // list of modules (for help msgs)
++void export_error(char *str, ...); // set error
++char *export_errstr(void); // return last error
++char *export_mkname(struct export *e, char *fmt, struct vt_page *vtp, char *usr);
++
++
++struct export *export_open(char *fmt);
++void export_close(struct export *e);
++int export(struct export *e, struct vt_page *vtp, char *user_str);
++#endif
+diff -r af23d23c278b util/alevt/fdset.c
+--- /dev/null Thu Jan 01 00:00:00 1970 +0000
++++ b/util/alevt/fdset.c Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,97 @@
++#include <stdlib.h>
++#include <unistd.h>
++#include <sys/time.h>
++#include "dllist.h"
++#include "misc.h"
++#include "fdset.h"
++
++struct fdset fds[1]; /* global fd list */
++
++
++int fdset_init(struct fdset *fds)
++{
++ dl_init(fds->list);
++ fds->del_count = 0;
++ return 0;
++}
++
++
++int fdset_add_fd(struct fdset *fds, int fd, void *handler, void *data)
++{
++ struct fdset_node *fn;
++
++ if (fd < 0)
++ return -1;
++ if (handler == 0)
++ return -1;
++
++ for (fn = PTR fds->list->first; fn->node->next; fn = PTR fn->node->next)
++ if (fn->fd == fd)
++ return -1;
++
++ if (not(fn = malloc(sizeof(*fn))))
++ return -1;
++ fn->fd = fd;
++ fn->handler = handler;
++ fn->data = data;
++ dl_insert_last(fds->list, fn->node);
++ return 0;
++}
++
++
++int fdset_del_fd(struct fdset *fds, int fd)
++{
++ struct fdset_node *fn;
++
++ for (fn = PTR fds->list->first; fn->node->next; fn = PTR fn->node->next)
++ if (fn->fd == fd)
++ {
++ dl_remove(fn->node);
++ free(fn);
++ fds->del_count++;
++ return 0;
++ }
++ return -1;
++}
++
++
++int fdset_select(struct fdset *fds, int timeout)
++{
++ struct fdset_node *fn;
++ fd_set rfds[1];
++ struct timeval tv[1], *tvp = 0;
++ int max_fd, x, del_count;
++
++ FD_ZERO(rfds);
++ max_fd = 0;
++ for (fn = PTR fds->list->first; fn->node->next; fn = PTR fn->node->next)
++ {
++ FD_SET(fn->fd, rfds);
++ if (fn->fd >= max_fd)
++ max_fd = fn->fd + 1;
++ }
++
++ if (timeout >= 0)
++ {
++ tv->tv_sec = timeout/1000;
++ tv->tv_usec = timeout%1000*1000;
++ tvp = tv;
++ }
++
++ x = select(max_fd, rfds, 0, 0, tvp);
++ if (x <= 0)
++ return x;
++
++ /* A little bit complicated. A called handler may modify the fdset... */
++restart:
++ del_count = fds->del_count;
++ for (fn = PTR fds->list->first; fn->node->next; fn = PTR fn->node->next)
++ if (FD_ISSET(fn->fd, rfds))
++ {
++ FD_CLR(fn->fd, rfds);
++ fn->handler(fn->data, fn->fd);
++ if (fds->del_count != del_count)
++ goto restart;
++ }
++ return 1;
++}
+diff -r af23d23c278b util/alevt/fdset.h
+--- /dev/null Thu Jan 01 00:00:00 1970 +0000
++++ b/util/alevt/fdset.h Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,28 @@
++#ifndef FDSET_H
++#define FDSET_H
++
++#include "dllist.h"
++
++
++struct fdset
++{
++ struct dl_head list[1];
++ int del_count;
++};
++
++
++struct fdset_node /*internal*/
++{
++ struct dl_node node[1];
++ int fd;
++ void (*handler)(void *data, int fd);
++ void *data;
++};
++
++extern struct fdset fds[1]; /* global fd list */
++
++int fdset_init(struct fdset *fds);
++int fdset_add_fd(struct fdset *fds, int fd, void *handler, void *data);
++int fdset_del_fd(struct fdset *fds, int fd);
++int fdset_select(struct fdset *fds, int timeout /*millisec*/);
++#endif
+diff -r af23d23c278b util/alevt/font.c
+--- /dev/null Thu Jan 01 00:00:00 1970 +0000
++++ b/util/alevt/font.c Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,5 @@
++#define static /* I want them global */
++#include "font1.xbm"
++#include "font2.xbm"
++#include "font3.xbm"
++#include "font4.xbm"
+diff -r af23d23c278b util/alevt/font.h
+--- /dev/null Thu Jan 01 00:00:00 1970 +0000
++++ b/util/alevt/font.h Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,19 @@
++#ifndef FONT_H
++#define FONT_H
++
++#include "fontsize.h" /* the #defines from font?.xbm */
++
++#if font1_width != font2_width || font1_height != font2_height
++#error different font sizes.
++#endif
++
++extern unsigned char font1_bits[];
++extern unsigned char font2_bits[];
++extern unsigned char font3_bits[];
++extern unsigned char font4_bits[];
++
++#define font_width font1_width
++#define font_height font1_height
++#define CW (font_width/32) /* pixel width of a character */
++#define CH (font_height/8) /* pixel height of a character */
++#endif
+diff -r af23d23c278b util/alevt/hamm.c
+--- /dev/null Thu Jan 01 00:00:00 1970 +0000
++++ b/util/alevt/hamm.c Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,229 @@
++#include "vt.h"
++#include "hamm.h"
++
++// table to decode hamm8/4 encoded bytes.
++// the low 4 bits are the (corrected) data bits
++// bit 8 is set if there was a single bit error
++// bit 12 is set if there was an uncorrectable error
++
++// the idea: you may add up to 15 words and get the
++// number of single bit errors in b8-b11 and the number
++// of double errors in b12-b15
++
++
++static unsigned short hammtab[256] =
++{
++ 0x0101, 0x100f, 0x0001, 0x0101, 0x100f, 0x0100, 0x0101, 0x100f,
++ 0x100f, 0x0102, 0x0101, 0x100f, 0x010a, 0x100f, 0x100f, 0x0107,
++ 0x100f, 0x0100, 0x0101, 0x100f, 0x0100, 0x0000, 0x100f, 0x0100,
++ 0x0106, 0x100f, 0x100f, 0x010b, 0x100f, 0x0100, 0x0103, 0x100f,
++ 0x100f, 0x010c, 0x0101, 0x100f, 0x0104, 0x100f, 0x100f, 0x0107,
++ 0x0106, 0x100f, 0x100f, 0x0107, 0x100f, 0x0107, 0x0107, 0x0007,
++ 0x0106, 0x100f, 0x100f, 0x0105, 0x100f, 0x0100, 0x010d, 0x100f,
++ 0x0006, 0x0106, 0x0106, 0x100f, 0x0106, 0x100f, 0x100f, 0x0107,
++ 0x100f, 0x0102, 0x0101, 0x100f, 0x0104, 0x100f, 0x100f, 0x0109,
++ 0x0102, 0x0002, 0x100f, 0x0102, 0x100f, 0x0102, 0x0103, 0x100f,
++ 0x0108, 0x100f, 0x100f, 0x0105, 0x100f, 0x0100, 0x0103, 0x100f,
++ 0x100f, 0x0102, 0x0103, 0x100f, 0x0103, 0x100f, 0x0003, 0x0103,
++ 0x0104, 0x100f, 0x100f, 0x0105, 0x0004, 0x0104, 0x0104, 0x100f,
++ 0x100f, 0x0102, 0x010f, 0x100f, 0x0104, 0x100f, 0x100f, 0x0107,
++ 0x100f, 0x0105, 0x0105, 0x0005, 0x0104, 0x100f, 0x100f, 0x0105,
++ 0x0106, 0x100f, 0x100f, 0x0105, 0x100f, 0x010e, 0x0103, 0x100f,
++ 0x100f, 0x010c, 0x0101, 0x100f, 0x010a, 0x100f, 0x100f, 0x0109,
++ 0x010a, 0x100f, 0x100f, 0x010b, 0x000a, 0x010a, 0x010a, 0x100f,
++ 0x0108, 0x100f, 0x100f, 0x010b, 0x100f, 0x0100, 0x010d, 0x100f,
++ 0x100f, 0x010b, 0x010b, 0x000b, 0x010a, 0x100f, 0x100f, 0x010b,
++ 0x010c, 0x000c, 0x100f, 0x010c, 0x100f, 0x010c, 0x010d, 0x100f,
++ 0x100f, 0x010c, 0x010f, 0x100f, 0x010a, 0x100f, 0x100f, 0x0107,
++ 0x100f, 0x010c, 0x010d, 0x100f, 0x010d, 0x100f, 0x000d, 0x010d,
++ 0x0106, 0x100f, 0x100f, 0x010b, 0x100f, 0x010e, 0x010d, 0x100f,
++ 0x0108, 0x100f, 0x100f, 0x0109, 0x100f, 0x0109, 0x0109, 0x0009,
++ 0x100f, 0x0102, 0x010f, 0x100f, 0x010a, 0x100f, 0x100f, 0x0109,
++ 0x0008, 0x0108, 0x0108, 0x100f, 0x0108, 0x100f, 0x100f, 0x0109,
++ 0x0108, 0x100f, 0x100f, 0x010b, 0x100f, 0x010e, 0x0103, 0x100f,
++ 0x100f, 0x010c, 0x010f, 0x100f, 0x0104, 0x100f, 0x100f, 0x0109,
++ 0x010f, 0x100f, 0x000f, 0x010f, 0x100f, 0x010e, 0x010f, 0x100f,
++ 0x0108, 0x100f, 0x100f, 0x0105, 0x100f, 0x010e, 0x010d, 0x100f,
++ 0x100f, 0x010e, 0x010f, 0x100f, 0x010e, 0x000e, 0x100f, 0x010e,
++};
++
++#if 0 // this information is contained in hamm24par bit 5
++// simple parity table (sum of 1 bits modulo 2)
++
++
++static char odd_parity[256] =
++{
++ 0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 1, 1, 0,
++ 1, 0, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 1,
++ 1, 0, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 1,
++ 0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 1, 1, 0,
++ 1, 0, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 1,
++ 0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 1, 1, 0,
++ 0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 1, 1, 0,
++ 1, 0, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 1,
++ 1, 0, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 1,
++ 0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 1, 1, 0,
++ 0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 1, 1, 0,
++ 1, 0, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 1,
++ 0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 1, 1, 0,
++ 1, 0, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 1,
++ 1, 0, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 1,
++ 0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 1, 1, 0
++};
++#endif
++
++// this table generates the parity checks for hamm24/18 decoding.
++// bit 0 is for test A, 1 for B, ...
++// thanks to R. Gancarz for this fine table *g*
++
++
++static char hamm24par[3][256] =
++{
++ { // parities of first byte
++ 0, 33, 34, 3, 35, 2, 1, 32, 36, 5, 6, 39, 7, 38, 37, 4,
++ 37, 4, 7, 38, 6, 39, 36, 5, 1, 32, 35, 2, 34, 3, 0, 33,
++ 38, 7, 4, 37, 5, 36, 39, 6, 2, 35, 32, 1, 33, 0, 3, 34,
++ 3, 34, 33, 0, 32, 1, 2, 35, 39, 6, 5, 36, 4, 37, 38, 7,
++ 39, 6, 5, 36, 4, 37, 38, 7, 3, 34, 33, 0, 32, 1, 2, 35,
++ 2, 35, 32, 1, 33, 0, 3, 34, 38, 7, 4, 37, 5, 36, 39, 6,
++ 1, 32, 35, 2, 34, 3, 0, 33, 37, 4, 7, 38, 6, 39, 36, 5,
++ 36, 5, 6, 39, 7, 38, 37, 4, 0, 33, 34, 3, 35, 2, 1, 32,
++ 40, 9, 10, 43, 11, 42, 41, 8, 12, 45, 46, 15, 47, 14, 13, 44,
++ 13, 44, 47, 14, 46, 15, 12, 45, 41, 8, 11, 42, 10, 43, 40, 9,
++ 14, 47, 44, 13, 45, 12, 15, 46, 42, 11, 8, 41, 9, 40, 43, 10,
++ 43, 10, 9, 40, 8, 41, 42, 11, 15, 46, 45, 12, 44, 13, 14, 47,
++ 15, 46, 45, 12, 44, 13, 14, 47, 43, 10, 9, 40, 8, 41, 42, 11,
++ 42, 11, 8, 41, 9, 40, 43, 10, 14, 47, 44, 13, 45, 12, 15, 46,
++ 41, 8, 11, 42, 10, 43, 40, 9, 13, 44, 47, 14, 46, 15, 12, 45,
++ 12, 45, 46, 15, 47, 14, 13, 44, 40, 9, 10, 43, 11, 42, 41, 8
++ }, { // parities of second byte
++ 0, 41, 42, 3, 43, 2, 1, 40, 44, 5, 6, 47, 7, 46, 45, 4,
++ 45, 4, 7, 46, 6, 47, 44, 5, 1, 40, 43, 2, 42, 3, 0, 41,
++ 46, 7, 4, 45, 5, 44, 47, 6, 2, 43, 40, 1, 41, 0, 3, 42,
++ 3, 42, 41, 0, 40, 1, 2, 43, 47, 6, 5, 44, 4, 45, 46, 7,
++ 47, 6, 5, 44, 4, 45, 46, 7, 3, 42, 41, 0, 40, 1, 2, 43,
++ 2, 43, 40, 1, 41, 0, 3, 42, 46, 7, 4, 45, 5, 44, 47, 6,
++ 1, 40, 43, 2, 42, 3, 0, 41, 45, 4, 7, 46, 6, 47, 44, 5,
++ 44, 5, 6, 47, 7, 46, 45, 4, 0, 41, 42, 3, 43, 2, 1, 40,
++ 48, 25, 26, 51, 27, 50, 49, 24, 28, 53, 54, 31, 55, 30, 29, 52,
++ 29, 52, 55, 30, 54, 31, 28, 53, 49, 24, 27, 50, 26, 51, 48, 25,
++ 30, 55, 52, 29, 53, 28, 31, 54, 50, 27, 24, 49, 25, 48, 51, 26,
++ 51, 26, 25, 48, 24, 49, 50, 27, 31, 54, 53, 28, 52, 29, 30, 55,
++ 31, 54, 53, 28, 52, 29, 30, 55, 51, 26, 25, 48, 24, 49, 50, 27,
++ 50, 27, 24, 49, 25, 48, 51, 26, 30, 55, 52, 29, 53, 28, 31, 54,
++ 49, 24, 27, 50, 26, 51, 48, 25, 29, 52, 55, 30, 54, 31, 28, 53,
++ 28, 53, 54, 31, 55, 30, 29, 52, 48, 25, 26, 51, 27, 50, 49, 24
++ }, { // parities of third byte
++ 63, 14, 13, 60, 12, 61, 62, 15, 11, 58, 57, 8, 56, 9, 10, 59,
++ 10, 59, 56, 9, 57, 8, 11, 58, 62, 15, 12, 61, 13, 60, 63, 14,
++ 9, 56, 59, 10, 58, 11, 8, 57, 61, 12, 15, 62, 14, 63, 60, 13,
++ 60, 13, 14, 63, 15, 62, 61, 12, 8, 57, 58, 11, 59, 10, 9, 56,
++ 8, 57, 58, 11, 59, 10, 9, 56, 60, 13, 14, 63, 15, 62, 61, 12,
++ 61, 12, 15, 62, 14, 63, 60, 13, 9, 56, 59, 10, 58, 11, 8, 57,
++ 62, 15, 12, 61, 13, 60, 63, 14, 10, 59, 56, 9, 57, 8, 11, 58,
++ 11, 58, 57, 8, 56, 9, 10, 59, 63, 14, 13, 60, 12, 61, 62, 15,
++ 31, 46, 45, 28, 44, 29, 30, 47, 43, 26, 25, 40, 24, 41, 42, 27,
++ 42, 27, 24, 41, 25, 40, 43, 26, 30, 47, 44, 29, 45, 28, 31, 46,
++ 41, 24, 27, 42, 26, 43, 40, 25, 29, 44, 47, 30, 46, 31, 28, 45,
++ 28, 45, 46, 31, 47, 30, 29, 44, 40, 25, 26, 43, 27, 42, 41, 24,
++ 40, 25, 26, 43, 27, 42, 41, 24, 28, 45, 46, 31, 47, 30, 29, 44,
++ 29, 44, 47, 30, 46, 31, 28, 45, 41, 24, 27, 42, 26, 43, 40, 25,
++ 30, 47, 44, 29, 45, 28, 31, 46, 42, 27, 24, 41, 25, 40, 43, 26,
++ 43, 26, 25, 40, 24, 41, 42, 27, 31, 46, 45, 28, 44, 29, 30, 47
++ }
++};
++
++// table to extract the lower 4 bit from hamm24/18 encoded bytes
++
++
++static char hamm24val[256] =
++{
++ 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1,
++ 2, 2, 2, 2, 3, 3, 3, 3, 2, 2, 2, 2, 3, 3, 3, 3,
++ 4, 4, 4, 4, 5, 5, 5, 5, 4, 4, 4, 4, 5, 5, 5, 5,
++ 6, 6, 6, 6, 7, 7, 7, 7, 6, 6, 6, 6, 7, 7, 7, 7,
++ 8, 8, 8, 8, 9, 9, 9, 9, 8, 8, 8, 8, 9, 9, 9, 9,
++ 10, 10, 10, 10, 11, 11, 11, 11, 10, 10, 10, 10, 11, 11, 11, 11,
++ 12, 12, 12, 12, 13, 13, 13, 13, 12, 12, 12, 12, 13, 13, 13, 13,
++ 14, 14, 14, 14, 15, 15, 15, 15, 14, 14, 14, 14, 15, 15, 15, 15,
++ 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1,
++ 2, 2, 2, 2, 3, 3, 3, 3, 2, 2, 2, 2, 3, 3, 3, 3,
++ 4, 4, 4, 4, 5, 5, 5, 5, 4, 4, 4, 4, 5, 5, 5, 5,
++ 6, 6, 6, 6, 7, 7, 7, 7, 6, 6, 6, 6, 7, 7, 7, 7,
++ 8, 8, 8, 8, 9, 9, 9, 9, 8, 8, 8, 8, 9, 9, 9, 9,
++ 10, 10, 10, 10, 11, 11, 11, 11, 10, 10, 10, 10, 11, 11, 11, 11,
++ 12, 12, 12, 12, 13, 13, 13, 13, 12, 12, 12, 12, 13, 13, 13, 13,
++ 14, 14, 14, 14, 15, 15, 15, 15, 14, 14, 14, 14, 15, 15, 15, 15
++};
++
++// mapping from parity checks made by table hamm24par to error
++// results return by hamm24.
++// (0 = no error, 0x0100 = single bit error, 0x1000 = double error)
++
++
++static short hamm24err[64] =
++{
++ 0x0000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000,
++ 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000,
++ 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000,
++ 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000,
++ 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100,
++ 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100,
++ 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100,
++ 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000,
++};
++
++// mapping from parity checks made by table hamm24par to faulty bit
++// in the decoded 18 bit word.
++
++
++static int hamm24cor[64] =
++{
++ 0x00000, 0x00000, 0x00000, 0x00000, 0x00000, 0x00000, 0x00000, 0x00000,
++ 0x00000, 0x00000, 0x00000, 0x00000, 0x00000, 0x00000, 0x00000, 0x00000,
++ 0x00000, 0x00000, 0x00000, 0x00000, 0x00000, 0x00000, 0x00000, 0x00000,
++ 0x00000, 0x00000, 0x00000, 0x00000, 0x00000, 0x00000, 0x00000, 0x00000,
++ 0x00000, 0x00000, 0x00000, 0x00001, 0x00000, 0x00002, 0x00004, 0x00008,
++ 0x00000, 0x00010, 0x00020, 0x00040, 0x00080, 0x00100, 0x00200, 0x00400,
++ 0x00000, 0x00800, 0x01000, 0x02000, 0x04000, 0x08000, 0x10000, 0x20000,
++ 0x00000, 0x00000, 0x00000, 0x00000, 0x00000, 0x00000, 0x00000, 0x00000,
++};
++
++
++int hamm8(u8 *p, int *err)
++{
++ int a = hammtab[p[0]];
++ *err += a;
++ return a & 15;
++}
++
++
++int hamm16(u8 *p, int *err)
++{
++ int a = hammtab[p[0]];
++ int b = hammtab[p[1]];
++ *err += a;
++ *err += b;
++ return (a & 15) | (b & 15) * 16;
++}
++
++
++int hamm24(u8 *p, int *err)
++{
++ int e = hamm24par[0][p[0]] ^ hamm24par[1][p[1]] ^ hamm24par[2][p[2]];
++ int x = hamm24val[p[0]] + p[1] % 128 * 16 + p[2] % 128 * 2048;
++ *err += hamm24err[e];
++ return x ^ hamm24cor[e];
++}
++
++
++int chk_parity(u8 *p, int n)
++{
++ int err;
++ for (err = 0; n--; p++)
++ if (hamm24par[0][*p] & 32)
++ *p &= 0x7f;
++ else
++ *p = BAD_CHAR, err++;
++ return err;
++}
+diff -r af23d23c278b util/alevt/hamm.h
+--- /dev/null Thu Jan 01 00:00:00 1970 +0000
++++ b/util/alevt/hamm.h Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,7 @@
++#ifndef HAMM_H
++#define HAMM_H
++int hamm8(u8 *p, int *err);
++int hamm16(u8 *p, int *err);
++int hamm24(u8 *p, int *err);
++int chk_parity(u8 *p, int n);
++#endif
+diff -r af23d23c278b util/alevt/help.c
+--- /dev/null Thu Jan 01 00:00:00 1970 +0000
++++ b/util/alevt/help.c Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,83 @@
++#include "vt.h"
++#include "misc.h"
++
++#define VFILL " "
++#define HELP_HEADER \
++"........\6AleVT Online Help System ", \
++" \22`p0`0 p `0pppp ", \
++"\4\35\22\177 \177j5`p \177 j5 j5 \7 Version \34", \
++"\4\35\22\177,\177j5\177.! +t>! j5 \7"VFILL VERSION" \34", \
++" \22# #\42!\42# \42 \42! ",
++#define FLOF_DATA \
++ 1, { {0x100,ANY_SUB}, {0x200,ANY_SUB}, {0x300,ANY_SUB}, \
++ {0x400,ANY_SUB}, {0x0ff,ANY_SUB}, {0x100,ANY_SUB} }
++
++
++struct vt_page help_pages[] =
++{
++ { 0x900, 0, -1, 0, 0, (1<<26)-1, {
++#include "vt900.out"
++ }, FLOF_DATA },
++
++ { 0x901, 1, -1, 0, 0, (1<<26)-1, {
++#include "vt901.out"
++ }, FLOF_DATA },
++
++ { 0x902, 1, -1, 0, 0, (1<<26)-1, {
++#include "vt902.out"
++ }, FLOF_DATA },
++
++ { 0x903, 1, -1, 0, 0, (1<<26)-1, {
++#include "vt903.out"
++ }, FLOF_DATA },
++
++ { 0x904, 1, -1, 0, 0, (1<<26)-1, {
++#include "vt904.out"
++ }, FLOF_DATA },
++
++ { 0x905, 2, -1, 0, 0, (1<<26)-1, {
++#include "vt905.out"
++ }, FLOF_DATA },
++
++ { 0x906, 1, -1, 0, 0, (1<<26)-1, {
++#include "vt906.out"
++ }, FLOF_DATA },
++
++ { 0x907, 2, -1, 0, 0, (1<<26)-1, {
++#include "vt907.out"
++ }, FLOF_DATA },
++
++ { 0x908, 1, -1, 0, 0, (1<<26)-1, {
++#include "vt908.out"
++ }, FLOF_DATA },
++
++ { 0x909, 0, -1, 0, 0, (1<<26)-1, {
++#include "vt909.out"
++ }, FLOF_DATA },
++
++ { 0x910, 2, -1, 0, 0, (1<<26)-1, {
++#include "vt910.out"
++ }, FLOF_DATA },
++
++ { 0x911, 1, -1, 0, 0, (1<<26)-1, {
++#include "vt911.out"
++ }, FLOF_DATA },
++
++ { 0x912, 2, -1, 0, 0, (1<<26)-1, {
++#include "vt912.out"
++ }, FLOF_DATA },
++
++ { 0x913, 1, -1, 0, 0, (1<<26)-1, {
++#include "vt913.out"
++ }, FLOF_DATA },
++
++ { 0x914, 0, -1, 0, 0, (1<<26)-1, {
++#include "vt914.out"
++ }, FLOF_DATA },
++
++ { 0x915, 0, -1, 0, 0, (1<<26)-1, {
++#include "vt915.out"
++ }, FLOF_DATA },
++};
++
++const int nr_help_pages = NELEM(help_pages);
+diff -r af23d23c278b util/alevt/help.h
+--- /dev/null Thu Jan 01 00:00:00 1970 +0000
++++ b/util/alevt/help.h Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,8 @@
++#ifndef HELP_H
++#define HELP_H
++
++#include "vt.h"
++
++extern struct vt_page help_pages[];
++extern const int nr_help_pages;
++#endif
+diff -r af23d23c278b util/alevt/icon.xbm
+--- /dev/null Thu Jan 01 00:00:00 1970 +0000
++++ b/util/alevt/icon.xbm Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,17 @@
++#define icon_width 58
++#define icon_height 20
++static unsigned char icon_bits[] = {
++ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x03, 0xff, 0xff, 0xff, 0xff,
++ 0xff, 0xff, 0xff, 0x03, 0x0f, 0x30, 0xfe, 0xff, 0xf8, 0x11, 0x00, 0x03,
++ 0x0f, 0x30, 0xfe, 0xff, 0xf8, 0x11, 0x00, 0x03, 0xc5, 0x23, 0xaa, 0xaa,
++ 0xa8, 0xf1, 0xf1, 0x03, 0xc6, 0x22, 0xfe, 0xd5, 0x58, 0xb1, 0xb1, 0x02,
++ 0x45, 0x23, 0x06, 0xaa, 0xa8, 0x51, 0x51, 0x01, 0xc6, 0x22, 0x06, 0xd6,
++ 0x58, 0xb1, 0xb1, 0x02, 0x45, 0x23, 0x62, 0xac, 0xa8, 0x51, 0x51, 0x01,
++ 0xc6, 0x22, 0x62, 0xd4, 0x58, 0xb1, 0xb1, 0x02, 0x45, 0x23, 0x62, 0xac,
++ 0xa8, 0x51, 0x51, 0x01, 0xc6, 0x23, 0x62, 0xd4, 0xf8, 0xb1, 0xb1, 0x02,
++ 0x05, 0x20, 0x02, 0xae, 0x61, 0x58, 0x51, 0x01, 0x06, 0x20, 0x02, 0x56,
++ 0x61, 0xa8, 0xb1, 0x02, 0xc5, 0x23, 0xe2, 0xab, 0x06, 0x56, 0x51, 0x01,
++ 0x46, 0x22, 0xe2, 0x57, 0x05, 0xaa, 0xb1, 0x02, 0xc7, 0x23, 0x06, 0xfe,
++ 0x9f, 0xff, 0xf1, 0x03, 0xc7, 0x23, 0x06, 0xfe, 0x9f, 0xff, 0xf1, 0x03,
++ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x03, 0xff, 0xff, 0xff, 0xff,
++ 0xff, 0xff, 0xff, 0x03, };
+diff -r af23d23c278b util/alevt/lang.c
+--- /dev/null Thu Jan 01 00:00:00 1970 +0000
++++ b/util/alevt/lang.c Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,393 @@
++#include <string.h>
++#include <ctype.h>
++#include "misc.h"
++#include "vt.h"
++#include "lang.h"
++
++int latin1 = -1;
++
++
++static u8 lang_char[256];
++static u8 lang_chars[1+8+8][16] =
++{
++ { 0, 0x23,0x24,0x40,0x5b,0x5c,0x5d,0x5e,0x5f,0x60,0x7b,0x7c,0x7d,0x7e },
++
++ // for latin-1 font
++ // English (100%)
++ { 0, '£', '$', '@', '«', '½', '»', '¬', '#', '­', '¼', '¦', '¾', '÷' },
++ // German (100%)
++ { 0, '#', '$', '§', 'Ä', 'Ö', 'Ü', '^', '_', '°', 'ä', 'ö', 'ü', 'ß' },
++ // Swedish/Finnish/Hungarian (100%)
++ { 0, '#', '¤', 'É', 'Ä', 'Ö', 'Å', 'Ü', '_', 'é', 'ä', 'ö', 'å', 'ü' },
++ // Italian (100%)
++ { 0, '£', '$', 'é', '°', 'ç', '»', '¬', '#', 'ù', 'à', 'ò', 'è', 'ì' },
++ // French (100%)
++ { 0, 'é', 'ï', 'à', 'ë', 'ê', 'ù', 'î', '#', 'è', 'â', 'ô', 'û', 'ç' },
++ // Portuguese/Spanish (100%)
++ { 0, 'ç', '$', '¡', 'á', 'é', 'í', 'ó', 'ú', '¿', 'ü', 'ñ', 'è', 'à' },
++ // Czech/Slovak (60%)
++ { 0, '#', 'u', 'c', 't', 'z', 'ý', 'í', 'r', 'é', 'á', 'e', 'ú', 's' },
++ // reserved (English mapping)
++ { 0, '£', '$', '@', '«', '½', '»', '¬', '#', '­', '¼', '¦', '¾', '÷' },
++
++ // for latin-2 font
++ // Polish (100%)
++ { 0, '#', 'ñ', '±', '¯', '¦', '£', 'æ', 'ó', 'ê', '¿', '¶', '³', '¼' },
++ // German (100%)
++ { 0, '#', '$', '§', 'Ä', 'Ö', 'Ü', '^', '_', '°', 'ä', 'ö', 'ü', 'ß' },
++ // Estonian (100%)
++ { 0, '#', 'õ', '©', 'Ä', 'Ö', '®', 'Ü', 'Õ', '¹', 'ä', 'ö', '¾', 'ü' },
++ // Lettish/Lithuanian (90%)
++ { 0, '#', '$', '©', 'ë', 'ê', '®', 'è', 'ü', '¹', '±', 'u', '¾', 'i' },
++ // French (90%)
++ { 0, 'é', 'i', 'a', 'ë', 'ì', 'u', 'î', '#', 'e', 'â', 'ô', 'u', 'ç' },
++ // Serbian/Croation/Slovenian (100%)
++ { 0, '#', 'Ë', 'È', 'Æ', '®', 'Ð', '©', 'ë', 'è', 'æ', '®', 'ð', '¹' },
++ // Czech/Slovak (100%)
++ { 0, '#', 'ù', 'è', '»', '¾', 'ý', 'í', 'ø', 'é', 'á', 'ì', 'ú', '¹' },
++ // Rumanian (95%)
++ { 0, '#', '¢', 'Þ', 'Â', 'ª', 'Ã', 'Î', 'i', 'þ', 'â', 'º', 'ã', 'î' },
++};
++
++/* Yankable latin charset :-)
++ !"#$%&'()*+,-./0123456789:;<=>?
++ @ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_
++ `abcdefghijklmnopqrstuvwxyz{|}~
++ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿
++ ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞß
++ àáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ
++*/
++
++
++static struct mark { u8 *g0, *latin1, *latin2; } marks[16] =
++{
++ /* none */ { "#",
++ "¤",
++ "$" },
++ /* grave - ` */ { " aeiouAEIOU",
++ "`àèìòùÀÈÌÒÙ",
++ "`aeiouAEIOU" },
++ /* acute - ' */ { " aceilnorsuyzACEILNORSUYZ",
++ "'ácéílnórsúýzÁCÉÍLNÓRSÚÝZ",
++ "'áæéíåñóà¶úý¼ÁÆÉÍÅÑÓÀ¦Úݬ" },
++ /* cirumflex - ^ */ { " aeiouAEIOU",
++ "^âêîôûÂÊÎÔÛ",
++ "^âeîôuÂEÎÔU" },
++ /* tilde - ~ */ { " anoANO",
++ "~ãñõÃÑÕ",
++ "~anoANO" },
++ /* ??? - ¯ */ { "",
++ "",
++ "" },
++ /* breve - u */ { "aA",
++ "aA",
++ "ãÃ" },
++ /* abovedot - · */ { "zZ",
++ "zZ",
++ "¿¯" },
++ /* diaeresis ¨ */ { "aeiouAEIOU",
++ "äëïöüÄËÏÖÜ",
++ "äëiöüÄËIÖÜ" },
++ /* ??? - . */ { "",
++ "",
++ "" },
++ /* ringabove - ° */ { " auAU",
++ "°åuÅU",
++ "°aùAÙ" },
++ /* cedilla - ¸ */ { "cstCST",
++ "çstÇST",
++ "çºþǪÞ" },
++ /* ??? - _ */ { " ",
++ "_",
++ "_" },
++ /* dbl acute - " */ { " ouOU",
++ "\"ouOU",
++ "\"õûÕÛ" },
++ /* ogonek - \, */ { "aeAE",
++ "aeAE",
++ "±ê¡Ê" },
++ /* caron - v */ { "cdelnrstzCDELNRSTZ",
++ "cdelnrstzCDELNRSTZ",
++ "èïìµòø¹»¾ÈÏÌ¥ÒØ©«®" },
++};
++
++
++static u8 g2map_latin1[] =
++ /*0123456789abcdef*/
++ " ¡¢£$¥#§¤'\"« "
++ "°±²³×µ¶·÷'\"»¼½¾¿"
++ " `´^~ ¨.°¸_\" "
++ "_¹®© "
++ " ÆЪH ILLØ ºÞTNn"
++ "Kædðhiillø ßþtn\x7f";
++
++
++static u8 g2map_latin2[] =
++ /*0123456789abcdef*/
++ " icL$Y#§¤'\"< "
++ "° ×u ÷'\"> "
++ " `´^~ ¢ÿ¨.°¸_½²·"
++ "- RC "
++ " ÐaH iL£O opTNn"
++ "K ðdhiil³o ßptn\x7f";
++
++
++void lang_init(void)
++{
++ int i;
++
++ memset(lang_char, 0, sizeof(lang_char));
++ for (i = 1; i <= 13; i++)
++ lang_char[lang_chars[0][i]] = i;
++}
++
++
++void conv2latin(u8 *p, int n, int lang)
++{
++ int c, gfx = 0, lat=0;
++
++ if ((latin1 == KOI8) && lang==12) { /* russian */
++ while (n--) {
++ c=*p;
++
++ if(c==0x1b) lat = !lat; /* ESC switches languages inside page */
++
++ if ( is_koi(c)) {
++ if (not gfx || (c & 0xa0) != 0x20) {
++ if(!lat) conv2koi8(p);
++ }
++ }
++ else if ((c & 0xe8) == 0)
++ gfx = c & 0x10;
++ p++;
++ }
++ }
++else if ((latin1 == GREEK) && lang==15) { /* Hellas */
++ while (n--) {
++ c=*p;
++
++ if(c==0x1b) lat = !lat; /* ESC switches languages inside page */
++
++ if ( is_greek(c)) {
++ if (not gfx || (c & 0xa0) != 0x20) {
++ if(!lat) conv2greek(p);
++ }
++ }
++ else if ((c & 0xe8) == 0)
++ gfx = c & 0x10;
++ p++;
++ }
++ }
++
++ else {
++ while (n--)
++ {
++ if (lang_char[c = *p])
++ {
++ if (not gfx || (c & 0xa0) != 0x20)
++ *p = lang_chars[lang + 1][lang_char[c]];
++ }
++ else if ((c & 0xe8) == 0)
++ gfx = c & 0x10;
++ p++;
++ }
++ }
++}
++
++
++/* check for Greek chars - needs locale iso8859-7 set */
++int is_greek(int c)
++{
++ if( isalpha(c | 0x80)) return 1;
++ return 0;
++}
++
++
++/* check for russian chars - needs locale KOI8-R set */
++int is_koi(int c)
++{
++ if( isalpha(c | 0x80)) return 1;
++ if( c=='&' ) return 1;
++ return 0;
++}
++
++
++/* teletext to koi8-r conversion */
++void conv2koi8(u8 *p)
++{
++ u8 c;
++ static u8 l2koi[]={
++ 0xE0, 0xE1, 0xE2, 0xE3, 0xE4, 0xE5, 0xE6, 0xE7, 0xE8, 0xE9,
++ 0xEA, 0xEB, 0xEC, 0xED, 0xEE, 0xEF, 0xF0, 0xF1, 0xF2, 0xF3,
++ 0xF4, 0xF5, 0xF6, 0xF7, 0xF8, 0xFF, 0xFA, 0xFB, 0xFC, 0xFD,
++ 0xFE, 0xF9, 0xC0, 0xC1, 0xC2, 0xC3, 0xC4, 0xC5, 0xC6, 0xC7,
++ 0xC8, 0xC9, 0xCA, 0xCB, 0xCC, 0xCD, 0xCE, 0xCF, 0xD0, 0xD1,
++ 0xD2, 0xD3, 0xD4, 0xD5, 0xD6, 0xD7, 0xD8, 0xD9, 0xDA, 0xDB,
++ 0xDC, 0xDD, 0xDE, 0xDF
++ };
++
++ c= *p;
++ if ( (c >= 0x40) && (c <= 0x7f)) *p=l2koi[(c & 0x7f) - 0x40];
++ if (c=='&') *p='Ù';
++}
++
++
++/* teletext to iso8859-7 conversion */
++void conv2greek(u8 *p)
++{
++ u8 c;
++ static u8 l2greek[]={
++/* 1 @ 0x40->ú*/0xc0,
++/* 2 A 0x41->Á*/0xc1,
++/* 3 B 0x42->Â*/0xc2,
++/* 4 C 0x43->Ã*/0xc3,
++/* 5 D 0x44->Ä*/0xc4,
++/* 6 E 0x45->Å*/0xc5,
++/* 7 F 0x46->Æ*/0xc6,
++/* 8 G 0x47->Ç*/0xc7,
++/* 9 H 0x48->È*/0xc8,
++/*10 I 0x49->É*/0xc9,
++/*11 J 0x4a->Ê*/0xca,
++/*12 K 0x4b->Ë*/0xcb,
++/*13 L 0x4c->Ì*/0xcc,
++/*14 M 0x4d->Í*/0xcd,
++/*15 N 0x4e->Î*/0xce,
++/*16 O 0x4f->Ï*/0xcf,
++/*17 P 0x50->Ð*/0xd0,
++/*18 Q 0x51->Ñ*/0xd1,
++/*19 R 0x52->?*/0x52,
++/*20 S 0x53->Ó*/0xd3,
++/*21 T 0x54->Ô*/0xd4,
++/*22 U 0x55->Õ*/0xd5,
++/*23 V 0x56->Ö*/0xd6,
++/*24 W 0x57->÷*/0xd7,
++/*25 X 0x58->Ø*/0xd8,
++/*26 Y 0x59->Ù*/0xd9,
++/*27 Z 0x5a->?*/0x5a,
++/*28 [ 0x5b->?*/0x5b,
++/*!29 \ 0x5c->Ü*/0xdc,
++/*!30 ] 0x5d->Ý*/0xdd,
++/*!31 ^ 0x5e->Þ*/0xde,
++/*!32 _ 0x5f->ß*/0xdf,
++/*33 ` 0x60->?*/0x60,
++/*!34 a 0x61->á*/0xe1,
++/*!35 b 0x62->â*/0xe2,
++/*!36 c 0x63->ã*/0xe3,
++/*!37 d 0x64->ä*/0xe4,
++/*!38 e 0x65->å*/0xe5,
++/*!39 f 0x66->æ*/0xe6,
++/*!40 g 0x67->ç*/0xe7,
++/*!41 h 0x68->è*/0xe8,
++/*!42 i 0x69->é*/0xe9,
++/*!43 j 0x6a->ê*/0xea,
++/*!44 k 0x6b->ë*/0xeb,
++/*!45 l 0x6c->ì*/0xec,
++/*!46 m 0x6d->í*/0xed,
++/*!47 n 0x6e->î*/0xee,
++/*!48 o 0x6f->ï*/0xef,
++/*!49 p 0x70->ð*/0xf0,
++/*!50 q 0x71->ñ*/0xf1,
++/*!51 r 0x72->ò*/0xf2,
++/*!52 s 0x73->ó*/0xf3,
++/*!53 t 0x74->ô*/0xf4,
++/*!54 u 0x75->õ*/0xf5,
++/*!55 v 0x76->ö*/0xf6,
++/*!56 w 0x77->÷*/0xf7,
++/*!57 x 0x78->ø*/0xf8,
++/*!58 y 0x79->ù*/0xf9,
++/*59 z 0x7a->ú(ìå ôüíï)*/0xc0,
++/*60 { 0x7b->?*/0x7b,
++/*!61 | 0x7c->ü*/0xfc,
++/*!62 } 0x7d->ý*/0xfd,
++/*!63 ~ 0x7e->þ*/0xfe,
++/*64 0x7f->?*/0x7f
++ };
++ c= *p;
++ if ( (c >= 0x40) && (c <= 0x7f)) *p=l2greek[(c & 0x7f) - 0x40];
++}
++
++
++void init_enhance(struct enhance *eh)
++{
++ eh->next_des = 0;
++}
++
++
++void add_enhance(struct enhance *eh, int dcode, u32 *t)
++{
++
++ if (dcode == eh->next_des)
++ {
++ memcpy(eh->trip + dcode * 13, t, 13 * sizeof(*t));
++ eh->next_des++;
++ }
++ else
++ eh->next_des = -1;
++}
++
++
++void enhance(struct enhance *eh, struct vt_page *vtp)
++{
++ int row = 0;
++ u32 *p, *e;
++
++ if (eh->next_des < 1)
++ return;
++
++ for (p = eh->trip, e = p + eh->next_des * 13; p < e; p++)
++ if (*p % 2048 != 2047)
++ {
++ int adr = *p % 64;
++ int mode = *p / 64 % 32;
++ int data = *p / 2048 % 128;
++
++ if (adr < 40)
++ {
++ // col functions
++ switch (mode)
++ {
++ case 15: // char from G2 set
++ if (adr < W && row < H)
++ if (latin1==LATIN1)
++ vtp->data[row][adr] = g2map_latin1[data-32];
++ else if (latin1==LATIN2)
++ vtp->data[row][adr] = g2map_latin2[data-32];
++ break;
++ case 16 ... 31: // char from G0 set with diacritical mark
++ if (adr < W && row < H)
++ {
++ struct mark *mark = marks + (mode - 16);
++ u8 *x;
++
++ if (x = strchr(mark->g0, data))
++ if (latin1==LATIN1)
++ data = mark->latin1[x - mark->g0];
++ else if (latin1==LATIN2)
++ data = mark->latin2[x - mark->g0];
++ vtp->data[row][adr] = data;
++ }
++ break;
++ }
++ }
++ else
++ {
++ // row functions
++ if ((adr -= 40) == 0)
++ adr = 24;
++
++ switch (mode)
++ {
++ case 1: // full row color
++ row = adr;
++ break;
++ case 4: // set active position
++ row = adr;
++ break;
++ case 7: // address row 0 (+ full row color)
++ if (adr == 23)
++ row = 0;
++ break;
++ }
++ }
++ }
++}
+diff -r af23d23c278b util/alevt/lang.h
+--- /dev/null Thu Jan 01 00:00:00 1970 +0000
++++ b/util/alevt/lang.h Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,28 @@
++#ifndef LANG_H
++#define LANG_H
++
++#include "misc.h"
++#include "vt.h"
++
++extern int latin1;
++
++#define LATIN1 1
++#define LATIN2 2
++#define KOI8 3
++#define GREEK 4
++
++
++struct enhance
++{
++ int next_des; // next expected designation code
++ u32 trip[13*16]; // tripplets
++};
++
++void lang_init(void);
++void conv2latin(u8 *p, int n, int lang);
++void conv2koi8(u8 *p);
++void conv2greek(u8 *p);
++void init_enhance(struct enhance *eh);
++void add_enhance(struct enhance *eh, int dcode, u32 *data);
++void enhance(struct enhance *eh, struct vt_page *vtp);
++#endif
+diff -r af23d23c278b util/alevt/main.c
+--- /dev/null Thu Jan 01 00:00:00 1970 +0000
++++ b/util/alevt/main.c Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,221 @@
++#include <stdio.h>
++#include <stdlib.h>
++#include <string.h>
++#include <locale.h>
++#include "vt.h"
++#include "misc.h"
++#include "fdset.h"
++#include "xio.h"
++#include "vbi.h"
++#include "lang.h"
++#include "cache.h"
++#include "ui.h"
++
++static char *geometry;
++static char *dpy_name;
++static char *vbi_name = NULL;
++static struct xio *xio;
++static struct vbi *vbi;
++static int erc = 1;
++char *outfile = "";
++static char *channel;
++static int ttpid = -1;
++u_int16_t sid = 0;
++
++
++static void usage(FILE *fp, int exitval)
++{
++ fprintf(fp, "\nUsage: %s [options]\n", prgname);
++ fprintf(fp,
++ "\n"
++ " Valid options:\t\tDefault:\n"
++ " -c <channel name>\t\t(none;dvb only)\n"
++ " -ch -child <ppp.ss>\t\t(none)\n"
++ " -cs -charset\t\tlatin-1\n"
++ " <latin-1/2/koi8-r/iso8859-7>\n"
++ " -h -help\n"
++ " -o <outfile>\t\t(none;dvb only)\n"
++ " -p -parent <ppp.ss>\t\t900\n"
++ " -s -sid <sid>\t\t(none;dvb only)\n"
++ " -t -ttpid <ttpid>\t\t(none;dvb only)\n"
++ " -v -vbi <vbidev>\t\t/dev/vbi\n"
++ " \t\t/dev/vbi0\n"
++ " \t\t/dev/video0\n"
++ " \t\t/dev/dvb/adapter0/demux0\n"
++ "\n"
++ " ppp.ss stands for a page number and an\n"
++ " optional subpage number (Example: 123.4).\n"
++ "\n"
++ " The -child option requires a parent\n"
++ " window. So it must be preceded by\n"
++ " a parent or another child window.\n"
++ );
++ exit(exitval);
++}
++
++
++static int arg_pgno(char *p, int *subno)
++{
++ char *end;
++ int pgno;
++
++ *subno = ANY_SUB;
++ if (*p)
++ {
++ pgno = strtol(p, &end, 16);
++ if ((*end == ':' || *end == '/' || *end == '.') && end[1])
++ *subno = strtol(end + 1, &end, 16);
++ if (*end == 0)
++ if (pgno >= 0x100 && pgno <= 0x999)
++ if (*subno == ANY_SUB || (*subno >= 0x00 && *subno <= 0x3f7f))
++ return pgno;
++ }
++ fatal("%s: invalid page number", p);
++}
++
++
++static struct vtwin * start(int argc, char **argv, struct vtwin *parent,
++ int pgno, int subno)
++{
++ static int valid_vbi_name = 1;
++
++ if (!valid_vbi_name)
++ return parent;
++
++ if (vbi == 0)
++ vbi = vbi_open(vbi_name, cache_open(), channel, outfile, sid, ttpid);
++ if (vbi == 0)
++ {
++ if (vbi_name)
++ error("cannot open device: %s", vbi_name);
++ valid_vbi_name = 0;
++ vbi = open_null_vbi(cache_open());
++ }
++ if (vbi->cache)
++ vbi->cache->op->mode(vbi->cache, CACHE_MODE_ERC, erc);
++
++ if (xio == 0)
++ xio = xio_open_dpy(dpy_name, argc, argv);
++ if (xio == 0)
++ fatal("cannot open display");
++
++ parent = vtwin_new(xio, vbi, geometry, parent, pgno, subno);
++ if (parent == 0)
++ fatal("cannot create window");
++
++ if (!valid_vbi_name)
++ {
++ if (vbi_name)
++ send_errmsg(vbi, "cannot open device: %s", vbi_name);
++ else
++ send_errmsg(vbi, "cannot open any device", vbi_name);
++ }
++
++ return parent;
++}
++
++
++static int option(int argc, char **argv, int *ind, char **arg)
++{
++ static struct { char *nam, *altnam; int arg; } opts[] = {
++ { "-channel", "-c", 1 },
++ { "-child", "-ch", 1 },
++ { "-charset", "-cs", 1 },
++ { "-help", "-h", 0 },
++ { "-outfile", "-o", 1 },
++ { "-parent", "-p", 1 },
++ { "-sid", "-s", 1 },
++ { "-ttpid", "-t", 1 },
++ { "-vbi", "-v", 1 },
++ };
++ int i;
++ if (*ind >= argc)
++ return 0;
++ *arg = argv[(*ind)++];
++ for (i = 0; i < NELEM(opts); ++i)
++ if (streq(*arg, opts[i].nam) || streq(*arg, opts[i].altnam))
++ {
++ if (opts[i].arg)
++ if (*ind < argc)
++ *arg = argv[(*ind)++];
++ else
++ fatal("option %s requires an argument", *arg);
++ return i+1;
++ }
++ if (**arg == '-')
++ {
++ fatal("%s: invalid option", *arg);
++ usage(stderr, 1);
++ }
++ return -1;
++}
++
++
++int main(int argc, char **argv)
++{
++ struct vtwin *parent = 0;
++ int pgno, subno;
++ int opt, ind;
++ char *arg;
++ sid = 0;
++
++ setprgname(argv[0]);
++ fdset_init(fds);
++
++ ind = 1;
++ while (opt = option(argc, argv, &ind, &arg))
++ switch (opt)
++ {
++
++ case 1: // channel
++ channel = arg;
++ break;
++ case 2: // child
++ if (parent == 0)
++ fatal("-child requires a parent window");
++ pgno = arg_pgno(arg, &subno);
++ parent = start(argc, argv, parent, pgno, subno);
++ geometry = 0;
++ break;
++ case 3: // charset
++ if (streq(arg, "latin-1") || streq(arg, "1"))
++ latin1 = LATIN1;
++ else if (streq(arg, "latin-2") || streq(arg, "2"))
++ latin1 = LATIN2;
++ else if (streq(arg, "koi8-r") || streq(arg, "koi"))
++ latin1 = KOI8;
++ else if (streq(arg, "iso8859-7") || streq(arg, "el"))
++ latin1 = GREEK;
++ else
++ fatal("bad charset (not latin-1/2/koi8-r/iso8859-7)");
++ break;
++ case 4: // help
++ usage(stdout, 0);
++ break;
++ case 5: // outfile
++ outfile = arg;
++ break;
++ case 6: // parent
++ case -1: // non-option arg
++ pgno = arg_pgno(arg, &subno);
++ parent = start(argc, argv, 0, pgno, subno);
++ geometry = 0;
++ break;
++ case 7: // sid
++ sid = strtoul(arg, NULL, 0);
++ break;
++ case 8: // ttpid
++ ttpid = strtoul(arg, NULL, 0);
++ break;
++ case 9: // vbi
++ vbi_name = arg;
++ vbi = 0;
++ parent = 0;
++ break;
++ }
++
++ if (parent == 0)
++ start(argc, argv, 0, 0x900, ANY_SUB);
++ xio_event_loop();
++ exit(0);
++}
+diff -r af23d23c278b util/alevt/misc.c
+--- /dev/null Thu Jan 01 00:00:00 1970 +0000
++++ b/util/alevt/misc.c Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,66 @@
++#include <stdio.h>
++#include <stdarg.h>
++#include "misc.h"
++
++char *prgname = 0;
++
++extern char *strrchr(const char *, int);
++NORETURN(exit(int));
++
++
++void setprgname(char *str)
++{
++ char *x = strrchr(str, '/');
++ prgname = x ? x+1 : str;
++}
++
++
++static void print_prgname(void)
++{
++ if (prgname && *prgname)
++ fprintf(stderr, "%s: ", prgname);
++}
++
++
++void error(const char *str, ...)
++{
++ va_list args;
++ va_start(args, str);
++ print_prgname();
++ vfprintf(stderr, str, args);
++ fputc('\n', stderr);
++}
++
++
++void ioerror(const char *str)
++{
++ print_prgname();
++ perror(str);
++}
++
++
++void fatal(const char *str, ...)
++{
++ va_list args;
++ va_start(args, str);
++ print_prgname();
++ vfprintf(stderr, str, args);
++ fputc('\n', stderr);
++ exit(2);
++}
++
++
++void fatal_ioerror(const char *str)
++{
++ print_prgname();
++ perror(str);
++ exit(2);
++}
++
++
++void out_of_mem(int size)
++{
++ if (size > 0)
++ fatal("out of memory allocating %d bytes.", size);
++ fatal("out of memory.");
++}
+diff -r af23d23c278b util/alevt/misc.h
+--- /dev/null Thu Jan 01 00:00:00 1970 +0000
++++ b/util/alevt/misc.h Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,32 @@
++#ifndef MISC_H
++#define MISC_H
++#define PTR (void *)
++#define NELEM(x) ((int)(sizeof(x)/sizeof(*(x))))
++#define NORETURN(x) void x __attribute__((__noreturn__))
++#define DEFINE(x) typeof(x) x
++#define OFFSET_OF(type, elem) ((u8 *)&((type *)0)->elem - (u8 *)0)
++#define BASE_OF(type, elem, p) ((type *)((u8 *)(p) - OFFSET_OF(type, elem)))
++
++#define not !
++#define streq(a, b) (strcmp((a), (b)) == 0)
++#define min(a,b) ({ typeof(a) _a = a; typeof(b) _b = b; _a < _b ? _a : _b; })
++#define max(a,b) ({ typeof(a) _a = a; typeof(b) _b = b; _a > _b ? _a : _b; })
++#define bound(a,b,c) ({ typeof(a) _a = a; typeof(b) _b = b; typeof(c) _c = c; \
++ _b < _a ? _a : _b > _c ? _c : _b; })
++
++typedef unsigned char u8;
++typedef unsigned short u16;
++typedef unsigned int u32;
++typedef signed char s8;
++typedef signed short s16;
++typedef signed int s32;
++
++extern char *prgname;
++void setprgname(char *argv_0);
++
++NORETURN(fatal(const char *str, ...));
++NORETURN(fatal_ioerror(const char *str));
++NORETURN(out_of_mem(int size));
++void error(const char *str, ...);
++void ioerror(const char *str);
++#endif
+diff -r af23d23c278b util/alevt/os.h
+--- /dev/null Thu Jan 01 00:00:00 1970 +0000
++++ b/util/alevt/os.h Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,7 @@
++#ifndef OS_H
++#define OS_H
++#if defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBsd__) \
++ || defined(__bsdi__)
++#define BSD
++#endif
++#endif
+diff -r af23d23c278b util/alevt/search.c
+--- /dev/null Thu Jan 01 00:00:00 1970 +0000
++++ b/util/alevt/search.c Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,127 @@
++#include <sys/types.h> // for freebsd
++#include <stdlib.h>
++#include "vt.h"
++#include "misc.h"
++#include "cache.h"
++#include "search.h"
++
++
++static void convert(u8 *p, u8 *buf, int *line)
++{
++ int x, y, c, ch, gfx, hid = 0;
++
++ for (y = 1, p += 40; y < 25; ++y)
++ {
++ if (not hid)
++ {
++ gfx = 0;
++ for (x = 0; x < 40; ++x)
++ {
++ c = ' ';
++ switch (ch = *p++)
++ {
++ case 0x00 ... 0x07:
++ gfx = 0;
++ break;
++ case 0x10 ... 0x17:
++ gfx = 1;
++ break;
++ case 0x0c:
++ hid = 1;
++ break;
++ case 0x7f:
++ c = '*';
++ break;
++ case 0x20 ... 0x7e:
++ if (gfx && ch != ' ' && (ch & 0xa0) == 0x20)
++ ch = '#';
++ case 0xa0 ... 0xff:
++ c= ch;
++ }
++ *buf++ = c;
++ }
++ *buf++ = '\n';
++ *line++ = y;
++ }
++ else
++ {
++ p += 40;
++ hid = 0;
++ }
++ }
++ *line = y;
++ *buf = 0;
++}
++
++
++static int search_pg(struct search *s, struct vt_page *vtp)
++{
++ regmatch_t m[1];
++ u8 buf[H *(W+1) + 1];
++ int line[H];
++
++ convert(PTR vtp->data, buf, line);
++ if (regexec(s->pattern, buf, 1, m, 0) == 0)
++ {
++ s->len = 0;
++ if (m->rm_so >= 0)
++ {
++ s->y = line[m->rm_so / (W+1)];
++ s->x = m->rm_so % (W+1);
++ s->len = m->rm_eo - m->rm_so;
++ if (s->x + s->len > 40)
++ s->len = 40 - s->x;
++ }
++ return 1;
++ }
++ return 0;
++}
++
++
++struct search * search_start(struct cache *ca, u8 *pattern)
++{
++ struct search *s;
++ int f = 0;
++
++ if (not(s = malloc(sizeof(*s))))
++ goto fail1;
++
++ if (pattern[0] == '!')
++ pattern++;
++ else
++ f = REG_ICASE;
++
++ if (regcomp(s->pattern, pattern, f | REG_NEWLINE) != 0)
++ goto fail2;
++
++ s->cache = ca;
++ return s;
++
++fail2:
++ free(s);
++fail1:
++ return 0;
++}
++
++
++void search_end(struct search *s)
++{
++ regfree(s->pattern);
++ free(s);
++}
++
++
++int search_next(struct search *s, int *pgno, int *subno, int dir)
++{
++ struct vt_page *vtp = 0;
++
++ if (s->cache)
++ vtp = s->cache->op->foreach_pg(s->cache, *pgno, *subno, dir,
++ search_pg, s);
++ if (vtp == 0)
++ return -1;
++
++ *pgno = vtp->pgno;
++ *subno = vtp->subno ?: ANY_SUB;
++ return 0;
++}
+diff -r af23d23c278b util/alevt/search.h
+--- /dev/null Thu Jan 01 00:00:00 1970 +0000
++++ b/util/alevt/search.h Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,16 @@
++#ifndef SEARCH_H
++#define SEARCH_H
++
++#include <regex.h>
++
++struct search
++{
++ struct cache *cache;
++ regex_t pattern[1];
++ int x, y, len; // the position of the match
++};
++
++struct search *search_start(struct cache *ca, u8 *pattern);
++void search_end(struct search *s);
++int search_next(struct search *s, int *pgno, int *subno, int dir);
++#endif
+diff -r af23d23c278b util/alevt/ui.c
+--- /dev/null Thu Jan 01 00:00:00 1970 +0000
++++ b/util/alevt/ui.c Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,721 @@
++#include <stdio.h>
++#include <unistd.h>
++#include <stdlib.h>
++#include <string.h>
++#include <fcntl.h>
++#include <ctype.h>
++#include <stdarg.h>
++#include "vt.h"
++#include "misc.h"
++#include "xio.h"
++#include "vbi.h"
++#include "fdset.h"
++#include "search.h"
++#include "export.h"
++#include "ui.h"
++
++static void vtwin_event(struct vtwin *w, struct vt_event *ev);
++static void msg(struct vtwin *w, u8 *str, ...);
++static void err(struct vtwin *w, u8 *str, ...);
++
++#define hist(w,o) ((w)->hist + (((w)->hist_top + (o)) & (N_HISTORY-1)))
++
++
++static int inc_hex(int i, int bcd_mode)
++{
++ i++;
++ if (bcd_mode)
++ {
++ if ((i & 0x000f) > 0x0009)
++ i = (i + 0x0010) & 0x0ff0;
++ if ((i & 0x00f0) > 0x090)
++ i = (i + 0x0100) & 0x0f00;
++ if ((i & 0x0f00) > 0x0900)
++ i = (i + 0x1000) & 0xf000;
++ }
++ return i;
++}
++
++
++static int dec_hex(int i, int bcd_mode)
++{
++ i--;
++ if (bcd_mode)
++ {
++ if ((i & 0x000f) > 0x0009)
++ i = (i & 0xfff0) + 0x0009;
++ if ((i & 0x00f0) > 0x0090)
++ i = (i & 0xff00) + 0x0099;
++ if ((i & 0x0f00) > 0x0900)
++ i = (i & 0xf000) + 0x0999;
++ }
++ return i;
++}
++
++
++static void set_title(struct vtwin *w)
++{
++ char buf[32], buf2[32];
++
++ if (w->subno == ANY_SUB)
++ sprintf(buf, "%x", w->pgno);
++ else
++ sprintf(buf, "%x/%x", w->pgno, w->subno);
++ if (w->searching)
++ sprintf(buf2, "(%s)", buf);
++ else
++ sprintf(buf2, "%s", buf);
++ xio_title(w->xw, buf2);
++}
++
++
++static void query_page(struct vtwin *w, int pgno, int subno)
++{
++ w->pgno = pgno;
++ w->subno = subno;
++ w->searching = 1;
++ w->hold = 0; //subno != ANY_SUB;
++ xio_set_concealed(w->xw, w->revealed = 0);
++
++ if (hist(w, 0)->pgno != pgno ||
++ (hist(w,0)->subno == ANY_SUB && subno != ANY_SUB))
++ w->hist_top++;
++ hist(w, 0)->pgno = pgno;
++ hist(w, 0)->subno = subno;
++ hist(w, 1)->pgno = 0; // end marker
++
++ xio_cancel_selection(w->xw);
++ if (vbi_query_page(w->vbi, pgno, subno) == 0)
++ {
++ w->vtp = 0;
++ }
++ set_title(w);
++}
++
++
++static void new_or_query(struct vtwin *w, int pgno, int subno, int new_win)
++{
++ if (new_win)
++ {
++ if (w->child)
++ query_page(w->child, pgno, subno);
++ else
++ vtwin_new(w->xw->xio, w->vbi, 0, w, pgno, subno);
++ }
++ else
++ query_page(w, pgno, subno);
++}
++
++static int _next_pgno(int *arg, struct vt_page *vtp)
++{
++ int pgno = vtp->pgno;
++
++ if (arg[0] == pgno) // want different page
++ return 0;
++ if (arg[1]) // and not a hex page
++ for (; pgno; pgno >>=4)
++ if ((pgno & 15) > 9)
++ return 0;
++ return 1;
++}
++
++
++static int _next_subno(int *arg, struct vt_page *vtp)
++{
++ return vtp->pgno == arg[0]; // only subpages of this page
++}
++
++
++static void do_next_pgno(struct vtwin *w, int dir, int bcd_mode, int subs,
++ int new_win)
++{
++ struct vt_page *vtp;
++ struct vtwin *cw = (new_win && w->child) ? w->child : w;
++ int pgno = cw->pgno;
++ int subno = cw->subno;
++
++ if (w->vbi->cache)
++ {
++ int arg[2];
++ arg[0] = pgno;
++ arg[1] = bcd_mode;
++ if (vtp = w->vbi->cache->op->foreach_pg(w->vbi->cache,
++ pgno, subno, dir, subs ? _next_subno:_next_pgno, &arg))
++ {
++ new_or_query(w, vtp->pgno, subs ? vtp->subno : ANY_SUB, new_win);
++ return;
++ }
++ }
++ err(w, "No page.");
++}
++
++#define notdigit(x) (not isdigit((x)))
++
++
++static int chk_screen_fromto(u8 *p, int x, int *n1, int *n2)
++{
++ p += x;
++
++ if (x >= 0 && x+5 < 42)
++ if (notdigit(p[1]) || notdigit(p[0]))
++ if (isdigit(p[2]))
++ if (p[3] == '/' || p[3] == ':')
++ if (isdigit(p[4]))
++ if (notdigit(p[5]) || notdigit(p[6])) /* p[6] is save here */
++ {
++ *n1 = p[2] % 16;
++ if (isdigit(p[1]))
++ *n1 += p[1] % 16 * 16;
++ *n2 = p[4] % 16;
++ if (isdigit(p[5]))
++ *n2 = *n2 * 16 + p[5] % 16;
++ return 1;
++ }
++ return 0;
++}
++
++
++static int chk_screen_pgno(u8 *p, int x, int *pgno, int *subno)
++{
++ p += x;
++
++ if (x >= 0 && x+4 < 42)
++ if (notdigit(p[0]) && notdigit(p[4]))
++ if (isdigit(p[1]) && isdigit(p[2]) && isdigit(p[3]))
++ {
++ *pgno = p[1] % 16 * 256 + p[2] % 16 * 16 + p[3] % 16;
++ if (*pgno >= 0x100 && *pgno <= 0x999)
++ {
++ *subno = ANY_SUB;
++ if (x+6 < 42)
++ if (p[4] == '.' || p[4] == '/')
++ if (isdigit(p[5]))
++ if (notdigit(p[6]) || notdigit(p[7])) /* p[7] is save here */
++ {
++ *subno = p[5] % 16;
++ if (isdigit(p[6]))
++ *subno = *subno * 16 + p[6] % 16;
++ }
++ // hackhackhack:
++ // pgno followed by start box gets subno 1
++ if (x+4 < 42 && p[4] == 11)
++ *subno = 1;
++ return 1;
++ }
++ }
++ return 0;
++}
++
++
++static void do_screen_pgno(struct vtwin *w, int x, int y, int new_win)
++{
++ u8 buf[42];
++ int n1, n2, i;
++
++ if (x >= 0 && x < 40)
++ {
++ if (xio_get_line(w->xw, y, buf+1) == 0)
++ {
++ buf[0] = buf[41] = ' ';
++ x++;
++
++ for (i = -6; i < 35; i++)
++ {
++ if (w->vtp == 0 || w->vtp->subno != 0)
++ if (chk_screen_fromto(buf, x+i, &n1, &n2))
++ {
++ // subno cycling works wrong with children.
++ // so middle button cycles backwards...
++ if (w->subno != ANY_SUB)
++ n1 = w->subno;
++ n1 = new_win ? dec_hex(n1, 1) : inc_hex(n1, 1);
++ if (n1 < 1)
++ n1 = n2;
++ if (n1 > n2)
++ n1 = 1;
++ new_or_query(w, w->pgno, n1, 0);
++ return;
++ }
++ if (i >= -4)
++ if (chk_screen_pgno(buf, x+i, &n1, &n2))
++ {
++ new_or_query(w, n1, n2, new_win);
++ return;
++ }
++ }
++ }
++ }
++ err(w, "No page.");
++}
++
++
++static void do_flof_pgno(struct vtwin *w, int button, int x, int new_win)
++{
++ struct vt_page *vtp = w->vtp;
++ int lk = 99, i, c;
++
++ if (vtp && vtp->flof)
++ {
++ switch (button)
++ {
++ case 1 ... 3:
++ for (i = 0; i <= x && i < 40; ++i)
++ if ((c = vtp->data[24][i]) < 8) // fg-color code
++ lk = c;
++ lk = "x\0\1\2\3x\3x"[lk]; // color -> link#
++ break;
++ case KEY_F(1): lk = 0; break;
++ case KEY_F(2): lk = 1; break;
++ case KEY_F(3): lk = 2; break;
++ case KEY_F(4): lk = 3; break;
++ case KEY_F(5): lk = 5; break;
++ }
++ if (lk < 6 && (vtp->link[lk].pgno & 0xff) != 0xff)
++ {
++ new_or_query(w, vtp->link[lk].pgno, vtp->link[lk].subno, new_win);
++ return;
++ }
++ }
++ else
++ {
++ switch (button)
++ {
++ case 1 ... 3: lk = x / 8; break;
++ case KEY_F(1): lk = 0; break;
++ case KEY_F(2): lk = 1; break;
++ case KEY_F(3): lk = 2; break;
++ case KEY_F(4): lk = 3; break;
++ case KEY_F(5): lk = 4; break;
++ }
++ switch (lk)
++ {
++ case 0: new_or_query(w, 0x100, ANY_SUB, new_win); return;
++ case 1: do_next_pgno(w, -1, 1, 0, new_win); return;
++ case 2: new_or_query(w, 0x900, ANY_SUB, new_win); return;
++ case 3: do_next_pgno(w, 1, 1, 0, new_win); return;
++ case 4: new_or_query(w, 0x999, ANY_SUB, new_win); return;
++ }
++ }
++ err(w, "No page.");
++}
++
++
++static void do_hist_pgno(struct vtwin *w)
++{
++ if (hist(w, -1)->pgno)
++ {
++ w->hist_top--;
++ query_page(w, hist(w, 0)->pgno, hist(w, 0)->subno);
++ }
++ else
++ err(w, "Empty history.");
++}
++
++
++static void put_head_line(struct vtwin *w, u8 *p)
++{
++ char buf[40];
++
++ if (p == 0)
++ xio_get_line(w->xw, 0, buf);
++ else
++ memcpy(buf + 8, p + 8, 32);
++
++ if (w->subno == ANY_SUB)
++ sprintf(buf, "\2%3x \5\xb7", w->pgno);
++ else
++ sprintf(buf, "\2S%02x \5\xb7", w->subno & 0xff);
++
++ if (w->searching)
++ buf[0] = 1;
++ if (w->hold)
++ buf[4] = 'H';
++ if (w->xw->concealed)
++ buf[6] = '*';
++ buf[7] = 7;
++
++ xio_put_line(w->xw, 0, buf);
++}
++
++
++static void put_menu_line(struct vtwin *w)
++{
++ if (w->status > 0)
++ xio_put_line(w->xw, 24, w->statusline);
++ else if (w->vtp && w->vtp->flof)
++ xio_put_line(w->xw, 24, w->vtp->data[24]);
++ else
++ xio_put_line(w->xw, 24, "\0 100 \4<< \6Help \4>>\0 999 ");
++}
++
++
++static void _msg(struct vtwin *w, u8 *str, va_list args)
++{
++ u8 buf[128];
++ int i;
++
++ i = vsprintf(buf, str, args);
++ if (i > W)
++ i = W;
++ memset(w->statusline, ' ', W);
++ memcpy(w->statusline + (W-i+1)/2, buf, i);
++ w->status = 6;
++ put_menu_line(w);
++}
++
++
++static void msg(struct vtwin *w, u8 *str, ...)
++{
++ va_list args;
++
++ va_start(args, str);
++ _msg(w, str, args);
++ va_end(args);
++}
++
++
++static void err(struct vtwin *w, u8 *str, ...)
++{
++ va_list args;
++
++ va_start(args, str);
++ _msg(w, str, args);
++ va_end(args);
++}
++
++
++static void next_search(struct vtwin *w, int rev)
++{
++ if (w->search)
++ {
++ int pgno = w->pgno;
++ int subno = w->subno;
++ int dir = rev ? -w->searchdir : w->searchdir;
++
++ if (search_next(w->search, &pgno, &subno, dir) == 0)
++ {
++ query_page(w, pgno, subno);
++ if (not w->searching && w->search->len)
++ xio_set_selection(w->xw, w->search->x, w->search->y,
++ w->search->x + w->search->len - 1, w->search->y);
++ return;
++ }
++ else
++ err(w, "Pattern not found.");
++ }
++ else
++ err(w, "No search pattern.");
++}
++
++
++static void start_search(struct vtwin *w, u8 *string)
++{
++ if (not string)
++ return;
++
++ if (*string)
++ {
++ if (w->search)
++ search_end(w->search);
++ w->search = search_start(w->vbi->cache, string);
++ if (w->search == 0)
++ {
++ err(w, "Bad search pattern.");
++ return;
++ }
++ }
++ next_search(w, 0);
++}
++
++
++static void start_save2(struct vtwin *w, u8 *name)
++{
++ if (name && *name)
++ if (export(w->export, w->vtp, name))
++ err(w, export_errstr());
++
++ export_close(w->export);
++ w->export = 0;
++ put_menu_line(w);
++}
++
++
++struct vtwin * vtwin_new(struct xio *xio, struct vbi *vbi, char *geom,
++ struct vtwin *parent, int pgno, int subno)
++{
++ struct vtwin *w;
++
++ if (not(w = malloc(sizeof(*w))))
++ goto fail1;
++
++ if (not (w->xw = xio_open_win(xio, geom)))
++ goto fail2;
++ w->vbi = vbi;
++ w->vtp = 0;
++ w->search = 0;
++ w->export = 0;
++ w->parent = parent;
++ w->child = 0;
++ if (parent && parent->child)
++ fatal("internal error: parent already has a child != 0");
++ if (parent)
++ parent->child = w;
++
++ w->hist_top = 1;
++ hist(w,0)->pgno = 0;
++ hist(w,1)->pgno = 0;
++ w->status = 0;
++ xio_set_handler(w->xw, vtwin_event, w);
++ vbi_add_handler(w->vbi, vtwin_event, w);
++ query_page(w, pgno, subno);
++ return w;
++
++fail2:
++ free(w);
++fail1:
++ return 0;
++}
++
++
++static void vtwin_close(struct vtwin *w)
++{
++ if (w->parent)
++ w->parent->child = w->child;
++ if (w->child)
++ w->child->parent = w->parent;
++
++ if (w->search)
++ search_end(w->search);
++ if (w->export)
++ export_close(w->export);
++
++ vbi_del_handler(w->vbi, vtwin_event, w);
++ xio_close_win(w->xw, 1);
++ free(w);
++}
++
++
++static void vtwin_event(struct vtwin *w, struct vt_event *ev)
++{
++ struct xio_win *xw = w->xw;
++ int i;
++
++ switch (ev->type)
++ {
++ case EV_CLOSE:
++ vtwin_close(w);
++ break;
++
++ case EV_TIMER:
++ if (w->status > 0 && --w->status == 0)
++ put_menu_line(w);
++ break;
++
++ case EV_KEY:
++ {
++ switch (ev->i1)
++ {
++ case '0' ... '9':
++ i = ev->i1 - '0';
++ if (w->pgno >= 0x100)
++ {
++ if (i == 0)
++ break;
++ w->pgno = i;
++ }
++ else
++ {
++ w->pgno = w->pgno * 16 + i;
++ if (w->pgno >= 0x100)
++ query_page(w, w->pgno, ANY_SUB);
++ }
++ break;
++ case 'q':
++ case '\e':
++ vtwin_close(w);
++ break;
++ case 'h':
++ query_page(w, 0x900, ANY_SUB);
++ break;
++ case 'e':
++ if (w->vbi->cache)
++ {
++ i = w->vbi->cache->op->mode(w->vbi->cache,
++ CACHE_MODE_ERC, 0);
++ w->vbi->cache->op->mode(w->vbi->cache,
++ CACHE_MODE_ERC, !i);
++ msg(w, "Error reduction %sabled.", i ? "dis" : "en");
++ }
++ break;
++ case 'o':
++ if (vtwin_new(xw->xio, w->vbi, 0, 0, w->pgno, w->subno) == 0)
++ err(w, "Unable to open new window.");
++ break;
++ case KEY_RIGHT:
++ do_next_pgno(w, 1, not ev->i2, 0, 0);
++ break;
++ case KEY_LEFT:
++ do_next_pgno(w, -1, not ev->i2, 0, 0);
++ break;
++ case KEY_UP:
++ do_next_pgno(w, -1, not ev->i2, 1, 0);
++ break;
++ case KEY_DOWN:
++ do_next_pgno(w, 1, not ev->i2, 1, 0);
++ break;
++ case '\b':
++ do_hist_pgno(w);
++ break;
++ case ' ':
++ w->hold = !w->hold;
++ break;
++ case 'c':
++ vbi_reset(w->vbi);
++ break;
++ case 'i':
++ if (w->vtp && w->vtp->flof &&
++ (w->vtp->link[5].pgno & 0xff) != 0xff)
++ query_page(w, w->vtp->link[5].pgno,
++ w->vtp->link[5].subno);
++ else
++ query_page(w, 0x100, ANY_SUB);
++ break;
++ case 'r':
++ xio_set_concealed(xw, w->revealed = !w->revealed);
++ break;
++ case KEY_F(1) ... KEY_F(5):
++ do_flof_pgno(w, ev->i1, 0, ev->i2);
++ break;
++ case 'n':
++ next_search(w, 0);
++ break;
++ case 'N':
++ next_search(w, 1);
++ break;
++ default:
++ err(w, "Unused key.");
++ break;
++ }
++ break;
++ }
++ case EV_RESET:
++ {
++ if (w->search)
++ search_end(w->search);
++ w->search = 0;
++
++ query_page(w, w->pgno, w->subno);
++ msg(w, "Cache cleared!");
++ break;
++ }
++ case EV_MOUSE:
++ {
++ if (ev->i1 == 3)
++ do_hist_pgno(w);
++ else if (ev->i1 == 5) // wheel mouse
++ do_next_pgno(w, 1, not ev->i2, 0, 0);
++ else if (ev->i1 == 4) // wheel mouse
++ do_next_pgno(w, -1, not ev->i2, 0, 0);
++ else if (ev->i1 == 7) // dual wheel mouse
++ do_next_pgno(w, 1, not ev->i2, 1, 0);
++ else if (ev->i1 == 6) // dual wheel mouse
++ do_next_pgno(w, -1, not ev->i2, 1, 0);
++ else if (ev->i4 == 24)
++ do_flof_pgno(w, ev->i1, ev->i3, ev->i1 == 2);
++ else if (ev->i4 == 0 && ev->i3 < 5)
++ {
++ if (ev->i1 == 1)
++ w->hold = !w->hold;
++ else
++ vtwin_new(xw->xio, w->vbi, 0, 0, w->pgno, w->subno);
++ }
++ else if (ev->i4 == 0 && ev->i3 < 8)
++ {
++ if (ev->i1 == 2 && w->child)
++ w = w->child;
++ xio_set_concealed(w->xw, w->revealed = !w->revealed);
++ }
++ else
++ do_screen_pgno(w, ev->i3, ev->i4, ev->i1 == 2);
++ break;
++ }
++ case EV_PAGE:
++ {
++ struct vt_page *vtp = ev->p1;
++
++ if (0)
++ if (vtp->errors)
++ printf("errors=%4d\n",vtp->errors);
++ if (w->searching || not(w->hold || ev->i1))
++ if (vtp->pgno == w->pgno)
++ if (w->subno == ANY_SUB || vtp->subno == w->subno)
++ {
++ w->searching = 0;
++ w->vtp = vtp;
++ put_head_line(w, vtp->data[0]);
++ for (i = 1; i < 24; ++i)
++ xio_put_line(w->xw, i, vtp->data[i]);
++ put_menu_line(w);
++ set_title(w);
++ }
++ break;
++ }
++ case EV_HEADER:
++ {
++ u8 *p = ev->p1;
++ int hdr_mag = ev->i1 / 256;
++ int flags = ev->i3;
++ int mag = w->pgno;
++ if (mag >= 0x10)
++ mag = mag >> 4;
++ if (mag >= 0x10)
++ mag = mag >> 4;
++ if (flags & PG_OUTOFSEQ)
++ p = 0;
++ else
++ if (~flags & PG_MAGSERIAL)
++ if (mag != hdr_mag)
++ p = 0;
++
++ put_head_line(w, p);
++ break;
++ }
++ case EV_XPACKET:
++ {
++#if 0 /* VPS data (seems to be unused in .de */
++ u8 *p = ev->p1;
++
++ if (ev->i1 == 8 && ev->i2 == 30 && p[0]/2 == 1)
++ {
++ int i;
++ int pil, cni, pty, misc;
++
++ for (i = 7; i < 20; ++i)
++ p[i] = hamm8(p+i, &ev->i3);
++ if (ev->i3 & 0xf000) /* uncorrectable errors */
++ break;
++ cni = p[9] + p[15]/4*16 + p[16]%4*64 + p[10]%4*256
++ + p[16]/4*1024 + p[17]*4096;
++ pty = p[18] + p[19]*16;
++ pil = p[10]/4 + p[11]*4 + p[12]*64 + p[13]*1024
++ + p[14]*16384 + p[15]%4*262144;
++ misc = p[7] + p[8]*16;
++ err(w, "%02x %04x %05x %02x: %.20s", misc, cni, pil, pty, p+20);
++ }
++#endif
++ break;
++ }
++ case EV_ERR:
++ {
++ char *errmsg = ev->p1;
++ if (errmsg != NULL && *errmsg != '\0')
++ {
++ err(w, errmsg);
++ w->status = 30;
++ ev->p1 = NULL;
++ free(errmsg);
++ }
++ break;
++ }
++ }
++}
+diff -r af23d23c278b util/alevt/ui.h
+--- /dev/null Thu Jan 01 00:00:00 1970 +0000
++++ b/util/alevt/ui.h Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,35 @@
++#ifndef UI_H
++#define UI_H
++
++#include "vt.h"
++#include "xio.h"
++#include "vbi.h"
++#include "search.h"
++
++#define N_HISTORY (1 << 6) // number of history entries
++
++struct vtwin
++{
++ struct vtwin *parent, *child;
++ struct xio_win *xw;
++ struct vbi *vbi;
++ struct {
++ int pgno;
++ int subno;
++ } hist[N_HISTORY];
++ int hist_top;
++ int searching;
++ int revealed;
++ int hold;
++ int pgno, subno;
++ struct vt_page *vtp;
++ struct search *search;
++ int searchdir;
++ int status;
++ u8 statusline[W+1];
++ struct export *export;
++};
++
++extern struct vtwin *vtwin_new(struct xio *xio, struct vbi *vbi, char *geom,
++ struct vtwin *parent, int pgno, int subno);
++#endif
+diff -r af23d23c278b util/alevt/vbi.c
+--- /dev/null Thu Jan 01 00:00:00 1970 +0000
++++ b/util/alevt/vbi.c Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,942 @@
++#define _GNU_SOURCE
++#include <stdlib.h>
++#include <string.h>
++#include <unistd.h>
++#include <fcntl.h>
++#include <stdio.h>
++#include <errno.h>
++#include <stdarg.h>
++#include <sys/ioctl.h>
++#include <sys/poll.h>
++#include "os.h"
++#include "vt.h"
++#include "misc.h"
++#include "vbi.h"
++#include "fdset.h"
++#include "hamm.h"
++#include "lang.h"
++#include <libzvbi.h>
++
++
++static vbi_capture * pZvbiCapt;
++static vbi_raw_decoder * pZvbiRawDec;
++static vbi_sliced * pZvbiData;
++static vbi_proxy_client * pProxy;
++
++#define ZVBI_BUFFER_COUNT 10
++#define ZVBI_TRACE 0
++
++
++static int vbi_dvb_open(struct vbi *vbi, const char *vbi_name,
++ const char *channel, char *outfile, u_int16_t sid, int ttpid);
++static void dvb_handler(struct vbi *vbi, int fd);
++
++#define FAC (1<<16) // factor for fix-point arithmetic
++
++static u8 *rawbuf; // one common buffer for raw vbi data
++static int rawbuf_size; // its current size
++u_int16_t sid;
++static char *vbi_names[]
++ = { "/dev/vbi", "/dev/vbi0", "/dev/video0", "/dev/dvb/adapter0/demux0",
++ NULL }; // default device names if none was given at the command line
++
++
++static void out_of_sync(struct vbi *vbi)
++{
++ int i; // discard all in progress pages
++ for (i = 0; i < 8; ++i)
++ vbi->rpage[i].page->flags &= ~PG_ACTIVE;
++}
++
++
++// send an event to all clients
++static void vbi_send(struct vbi *vbi, int type, int i1, int i2, int i3, void *p1)
++{
++ struct vt_event ev[1];
++ struct vbi_client *cl, *cln;
++ ev->resource = vbi;
++ ev->type = type;
++ ev->i1 = i1;
++ ev->i2 = i2;
++ ev->i3 = i3;
++ ev->p1 = p1;
++ for (cl = PTR vbi->clients->first; cln = PTR cl->node->next; cl = cln)
++ cl->handler(cl->data, ev);
++}
++
++
++static void vbi_send_page(struct vbi *vbi, struct raw_page *rvtp, int page)
++{
++ struct vt_page *cvtp = 0;
++
++ if (rvtp->page->flags & PG_ACTIVE)
++ {
++ if (rvtp->page->pgno % 256 != page)
++ {
++ rvtp->page->flags &= ~PG_ACTIVE;
++ enhance(rvtp->enh, rvtp->page);
++ if (vbi->cache)
++ cvtp = vbi->cache->op->put(vbi->cache, rvtp->page);
++ vbi_send(vbi, EV_PAGE, 0, 0, 0, cvtp ?: rvtp->page);
++ }
++ }
++}
++
++
++static void pll_add(struct vbi *vbi, int n, int err)
++{
++}
++
++
++// process one videotext packet
++static int vt_line(struct vbi *vbi, u8 *p)
++{
++ struct vt_page *cvtp;
++ struct raw_page *rvtp;
++ int hdr, mag, mag8, pkt, i;
++ int err = 0;
++
++ hdr = hamm16(p, &err);
++ if (err & 0xf000)
++ return -4;
++ mag = hdr & 7;
++ mag8 = mag?: 8;
++ pkt = (hdr >> 3) & 0x1f;
++ p += 2;
++ rvtp = vbi->rpage + mag;
++ cvtp = rvtp->page;
++ switch (pkt)
++ {
++ case 0:
++ {
++ int b1, b2, b3, b4;
++ b1 = hamm16(p, &err); // page number
++ b2 = hamm16(p+2, &err); // subpage number + flags
++ b3 = hamm16(p+4, &err); // subpage number + flags
++ b4 = hamm16(p+6, &err); // language code + more flags
++ if (vbi->ppage->page->flags & PG_MAGSERIAL)
++ vbi_send_page(vbi, vbi->ppage, b1);
++ vbi_send_page(vbi, rvtp, b1);
++
++ if (err & 0xf000)
++ return 4;
++
++ cvtp->errors = (err >> 8) + chk_parity(p + 8, 32);;
++ cvtp->pgno = mag8 * 256 + b1;
++ cvtp->subno = (b2 + b3 * 256) & 0x3f7f;
++ cvtp->lang = "\0\4\2\6\1\5\3\7"[b4 >> 5] + (latin1==LATIN1 ? 0 : 8);
++ cvtp->flags = b4 & 0x1f;
++ cvtp->flags |= b3 & 0xc0;
++ cvtp->flags |= (b2 & 0x80) >> 2;
++ cvtp->lines = 1;
++ cvtp->flof = 0;
++ vbi->ppage = rvtp;
++ pll_add(vbi, 1, cvtp->errors);
++ conv2latin(p + 8, 32, cvtp->lang);
++ vbi_send(vbi, EV_HEADER, cvtp->pgno, cvtp->subno, cvtp->flags, p);
++
++ if (b1 == 0xff)
++ return 0;
++ cvtp->flags |= PG_ACTIVE;
++ init_enhance(rvtp->enh);
++ memcpy(cvtp->data[0]+0, p, 40);
++ memset(cvtp->data[0]+40, ' ', sizeof(cvtp->data)-40);
++ return 0;
++ }
++
++ case 1 ... 24:
++ {
++ pll_add(vbi, 1, err = chk_parity(p, 40));
++
++ if (~cvtp->flags & PG_ACTIVE)
++ return 0;
++
++ cvtp->errors += err;
++ cvtp->lines |= 1 << pkt;
++ conv2latin(p, 40, cvtp->lang);
++ memcpy(cvtp->data[pkt], p, 40);
++ return 0;
++ }
++ case 26:
++ {
++ int d, t[13];
++
++ if (~cvtp->flags & PG_ACTIVE)
++ return 0;
++
++ d = hamm8(p, &err);
++ if (err & 0xf000)
++ return 4;
++
++ for (i = 0; i < 13; ++i)
++ t[i] = hamm24(p + 1 + 3*i, &err);
++ if (err & 0xf000)
++ return 4;
++
++ add_enhance(rvtp->enh, d, t);
++ return 0;
++ }
++ case 27:
++ {
++ int b1,b2,b3,x;
++ if (~cvtp->flags & PG_ACTIVE)
++ return 0; // -1 flushes all pages. We may never resync again
++
++ b1 = hamm8(p, &err);
++ b2 = hamm8(p + 37, &err);
++ if (err & 0xf000)
++ return 4;
++ if (b1 != 0 || not(b2 & 8))
++ return 0;
++
++ for (i = 0; i < 6; ++i)
++ {
++ err = 0;
++ b1 = hamm16(p+1+6*i, &err);
++ b2 = hamm16(p+3+6*i, &err);
++ b3 = hamm16(p+5+6*i, &err);
++ if (err & 0xf000)
++ return 1;
++ x = (b2 >> 7) | ((b3 >> 5) & 0x06);
++ cvtp->link[i].pgno = ((mag ^ x) ?: 8) * 256 + b1;
++ cvtp->link[i].subno = (b2 + b3 * 256) & 0x3f7f;
++ }
++ cvtp->flof = 1;
++ return 0;
++ }
++ case 30:
++ {
++ if (mag8 != 8)
++ return 0;
++ p[0] = hamm8(p, &err); // designation code
++ p[1] = hamm16(p+1, &err); // initial page
++ p[3] = hamm16(p+3, &err); // initial subpage + mag
++ p[5] = hamm16(p+5, &err); // initial subpage + mag
++ if (err & 0xf000)
++ return 4;
++ err += chk_parity(p+20, 20);
++ conv2latin(p+20, 20, 0);
++ vbi_send(vbi, EV_XPACKET, mag8, pkt, err, p);
++ return 0;
++ }
++ default:
++ return 0;
++ }
++ return 0;
++}
++
++
++// called when new vbi data is waiting
++static void vbi_handler(struct vbi *vbi, int fd)
++{
++ double timestamp;
++ struct timeval timeout;
++ int lineCount;
++ int line;
++ int res;
++
++ timeout.tv_sec = 0;
++ timeout.tv_usec = 25000;
++ res = vbi_capture_read_sliced(pZvbiCapt, pZvbiData, &lineCount, &timestamp,
++ &timeout);
++ if (res > 0)
++ {
++ for (line=0; line < lineCount; line++)
++ {
++ if ((pZvbiData[line].id & VBI_SLICED_TELETEXT_B) != 0)
++ {
++ vt_line(vbi, pZvbiData[line].data);
++ }
++ }
++ }
++ else if (res < 0)
++ {
++ }
++}
++
++
++int vbi_add_handler(struct vbi *vbi, void *handler, void *data)
++{
++ struct vbi_client *cl;
++
++ if (not(cl = malloc(sizeof(*cl))))
++ return -1;
++ cl->handler = handler;
++ cl->data = data;
++ dl_insert_last(vbi->clients, cl->node);
++ return 0;
++}
++
++
++void vbi_del_handler(struct vbi *vbi, void *handler, void *data)
++{
++ struct vbi_client *cl;
++
++ for (cl = PTR vbi->clients->first; cl->node->next; cl = PTR cl->node->next)
++ if (cl->handler == handler && cl->data == data)
++ {
++ dl_remove(cl->node);
++ break;
++ }
++ return;
++}
++
++
++struct vbi * vbi_open(char *vbi_name, struct cache *ca,
++ const char *channel, char *outfile, u_int16_t sid, int ttpid)
++{
++ static int inited = 0;
++ struct vbi *vbi;
++ char * pErrStr;
++ int services;
++
++ if (vbi_name == NULL)
++ {
++ int i;
++ char *tried_devices = NULL;
++ char *old_tried_devices = NULL;
++ for (i = 0; vbi_names[i] != NULL; i++)
++ {
++ vbi_name = vbi_names[i];
++ // collect device names for the error message below
++ if (old_tried_devices)
++ {
++ if (asprintf(&tried_devices, "%s, %s", old_tried_devices, vbi_name) < 0)
++ tried_devices = NULL;
++ free(old_tried_devices);
++ }
++ else if (asprintf(&tried_devices, "%s", vbi_name) < 0)
++ tried_devices = NULL;
++ if (tried_devices == NULL)
++ out_of_mem(-1);
++ old_tried_devices = tried_devices;
++ if (access(vbi_name, R_OK) != 0)
++ continue;
++ vbi = vbi_open(vbi_name, ca, channel, outfile, sid, ttpid);
++ if (vbi != NULL)
++ {
++ if (tried_devices != NULL)
++ free(tried_devices);
++ return vbi;
++ }
++ }
++
++ error("could not open any of the standard devices (%s)", tried_devices);
++ free(tried_devices);
++ return NULL;
++ }
++
++ if (not inited)
++ lang_init();
++ inited = 1;
++
++ if (not(vbi = malloc(sizeof(*vbi))))
++ {
++ error("out of memory");
++ goto fail1;
++ }
++ if (!vbi_dvb_open(vbi, vbi_name, channel, outfile, sid, ttpid)) {
++ vbi->cache = ca;
++ dl_init(vbi->clients);
++ out_of_sync(vbi);
++ vbi->ppage = vbi->rpage;
++ fdset_add_fd(fds, vbi->fd, dvb_handler, vbi);
++ return vbi;
++ }
++
++ services = VBI_SLICED_TELETEXT_B;
++ pErrStr = NULL;
++ vbi->fd = -1;
++
++ pProxy = vbi_proxy_client_create(vbi_name, "alevt",
++ VBI_PROXY_CLIENT_NO_STATUS_IND, &pErrStr, ZVBI_TRACE);
++ if (pProxy != NULL)
++ {
++ pZvbiCapt = vbi_capture_proxy_new(pProxy, ZVBI_BUFFER_COUNT, 0,
++ &services, 0, &pErrStr);
++ if (pZvbiCapt == NULL)
++ {
++ vbi_proxy_client_destroy(pProxy);
++ pProxy = NULL;
++ }
++ }
++ if (pZvbiCapt == NULL)
++ pZvbiCapt = vbi_capture_v4l2_new(vbi_name, ZVBI_BUFFER_COUNT,
++ &services, 0, &pErrStr, ZVBI_TRACE);
++ if (pZvbiCapt == NULL)
++ pZvbiCapt = vbi_capture_v4l_new(vbi_name, 0, &services, 0, &pErrStr,
++ ZVBI_TRACE);
++
++ if (pZvbiCapt != NULL)
++ {
++ pZvbiRawDec = vbi_capture_parameters(pZvbiCapt);
++ if ((pZvbiRawDec != NULL) && ((services & VBI_SLICED_TELETEXT_B) != 0))
++ {
++ pZvbiData = malloc((pZvbiRawDec->count[0] + pZvbiRawDec->count[1]) \
++ * sizeof(*pZvbiData));
++
++ vbi->fd = vbi_capture_fd(pZvbiCapt);
++ }
++ else
++ vbi_capture_delete(pZvbiCapt);
++ }
++
++ if (pErrStr != NULL)
++ {
++ fprintf(stderr, "libzvbi: %s\n", pErrStr);
++ free(pErrStr);
++ }
++
++ if (vbi->fd == -1)
++ goto fail2;
++ vbi->cache = ca;
++ dl_init(vbi->clients);
++ out_of_sync(vbi);
++ vbi->ppage = vbi->rpage;
++ fdset_add_fd(fds, vbi->fd, vbi_handler, vbi);
++ return vbi;
++
++fail3:
++ close(vbi->fd);
++fail2:
++ free(vbi);
++fail1:
++ return 0;
++}
++
++
++void vbi_close(struct vbi *vbi)
++{
++ fdset_del_fd(fds, vbi->fd);
++ if (vbi->cache)
++ vbi->cache->op->close(vbi->cache);
++
++ if (pZvbiData != NULL)
++ free(pZvbiData);
++ pZvbiData = NULL;
++
++ if (pZvbiCapt != NULL)
++ {
++ vbi_capture_delete(pZvbiCapt);
++ pZvbiCapt = NULL;
++ }
++ if (pProxy != NULL)
++ {
++ vbi_proxy_client_destroy(pProxy);
++ pProxy = NULL;
++ }
++ free(vbi);
++}
++
++
++struct vt_page * vbi_query_page(struct vbi *vbi, int pgno, int subno)
++{
++ struct vt_page *vtp = 0;
++ if (vbi->cache)
++ vtp = vbi->cache->op->get(vbi->cache, pgno, subno);
++ if (vtp == 0)
++ {
++ return 0;
++ }
++ vbi_send(vbi, EV_PAGE, 1, 0, 0, vtp);
++ return vtp;
++}
++
++
++void vbi_reset(struct vbi *vbi)
++{
++ if (vbi->cache)
++ vbi->cache->op->reset(vbi->cache);
++ vbi_send(vbi, EV_RESET, 0, 0, 0, 0);
++}
++
++
++/* Starting from here: DVB API */
++#include <linux/dvb/dmx.h>
++#include <linux/dvb/frontend.h>
++#include <linux/dvb/video.h>
++
++static int dvb_get_table(int fd, u_int16_t pid, u_int8_t tblid, u_int8_t *buf,
++ size_t bufsz)
++{
++ struct dmx_sct_filter_params sctFilterParams;
++ struct pollfd pfd;
++ int r;
++ memset(&sctFilterParams, 0, sizeof(sctFilterParams));
++ sctFilterParams.pid = pid;
++ sctFilterParams.timeout = 10000;
++ sctFilterParams.flags = DMX_ONESHOT | DMX_IMMEDIATE_START | DMX_CHECK_CRC;
++ sctFilterParams.filter.filter[0] = tblid;
++ sctFilterParams.filter.mask[0] = 0xff;
++ if (ioctl(fd, DMX_SET_FILTER, &sctFilterParams)) {
++ perror("DMX_SET_FILTER");
++ return -1;
++ }
++ pfd.fd = fd;
++ pfd.events = POLLIN;
++ r = poll(&pfd, 1, 10000);
++ if (r < 0) {
++ perror("poll");
++ goto out;
++ }
++ if (r > 0) {
++ r = read(fd, buf, bufsz);
++ if (r < 0) {
++ perror("read");
++ goto out;
++ }
++ }
++ out:
++ ioctl(fd, DMX_STOP, 0);
++ return r;
++}
++
++static const u_int8_t byterev8[256] = {
++ 0x00, 0x80, 0x40, 0xc0, 0x20, 0xa0, 0x60, 0xe0,
++ 0x10, 0x90, 0x50, 0xd0, 0x30, 0xb0, 0x70, 0xf0,
++ 0x08, 0x88, 0x48, 0xc8, 0x28, 0xa8, 0x68, 0xe8,
++ 0x18, 0x98, 0x58, 0xd8, 0x38, 0xb8, 0x78, 0xf8,
++ 0x04, 0x84, 0x44, 0xc4, 0x24, 0xa4, 0x64, 0xe4,
++ 0x14, 0x94, 0x54, 0xd4, 0x34, 0xb4, 0x74, 0xf4,
++ 0x0c, 0x8c, 0x4c, 0xcc, 0x2c, 0xac, 0x6c, 0xec,
++ 0x1c, 0x9c, 0x5c, 0xdc, 0x3c, 0xbc, 0x7c, 0xfc,
++ 0x02, 0x82, 0x42, 0xc2, 0x22, 0xa2, 0x62, 0xe2,
++ 0x12, 0x92, 0x52, 0xd2, 0x32, 0xb2, 0x72, 0xf2,
++ 0x0a, 0x8a, 0x4a, 0xca, 0x2a, 0xaa, 0x6a, 0xea,
++ 0x1a, 0x9a, 0x5a, 0xda, 0x3a, 0xba, 0x7a, 0xfa,
++ 0x06, 0x86, 0x46, 0xc6, 0x26, 0xa6, 0x66, 0xe6,
++ 0x16, 0x96, 0x56, 0xd6, 0x36, 0xb6, 0x76, 0xf6,
++ 0x0e, 0x8e, 0x4e, 0xce, 0x2e, 0xae, 0x6e, 0xee,
++ 0x1e, 0x9e, 0x5e, 0xde, 0x3e, 0xbe, 0x7e, 0xfe,
++ 0x01, 0x81, 0x41, 0xc1, 0x21, 0xa1, 0x61, 0xe1,
++ 0x11, 0x91, 0x51, 0xd1, 0x31, 0xb1, 0x71, 0xf1,
++ 0x09, 0x89, 0x49, 0xc9, 0x29, 0xa9, 0x69, 0xe9,
++ 0x19, 0x99, 0x59, 0xd9, 0x39, 0xb9, 0x79, 0xf9,
++ 0x05, 0x85, 0x45, 0xc5, 0x25, 0xa5, 0x65, 0xe5,
++ 0x15, 0x95, 0x55, 0xd5, 0x35, 0xb5, 0x75, 0xf5,
++ 0x0d, 0x8d, 0x4d, 0xcd, 0x2d, 0xad, 0x6d, 0xed,
++ 0x1d, 0x9d, 0x5d, 0xdd, 0x3d, 0xbd, 0x7d, 0xfd,
++ 0x03, 0x83, 0x43, 0xc3, 0x23, 0xa3, 0x63, 0xe3,
++ 0x13, 0x93, 0x53, 0xd3, 0x33, 0xb3, 0x73, 0xf3,
++ 0x0b, 0x8b, 0x4b, 0xcb, 0x2b, 0xab, 0x6b, 0xeb,
++ 0x1b, 0x9b, 0x5b, 0xdb, 0x3b, 0xbb, 0x7b, 0xfb,
++ 0x07, 0x87, 0x47, 0xc7, 0x27, 0xa7, 0x67, 0xe7,
++ 0x17, 0x97, 0x57, 0xd7, 0x37, 0xb7, 0x77, 0xf7,
++ 0x0f, 0x8f, 0x4f, 0xcf, 0x2f, 0xaf, 0x6f, 0xef,
++ 0x1f, 0x9f, 0x5f, 0xdf, 0x3f, 0xbf, 0x7f, 0xff
++};
++
++static void dvb_handle_pes_payload(struct vbi *vbi, const u_int8_t *buf,
++ unsigned int len)
++{
++ unsigned int p, i;
++ u_int8_t data[42];
++
++ if (buf[0] < 0x10 || buf[0] > 0x1f)
++ return; /* no EBU teletext data */
++ for (p = 1; p < len; p += /*6 + 40*/ 2 + buf[p + 1]) {
++#if 0
++ printf("Txt Line:\n"
++ " data_unit_id 0x%02x\n"
++ " data_unit_length 0x%02x\n"
++ " reserved_for_future_use 0x%01x\n"
++ " field_parity 0x%01x\n"
++ " line_offset 0x%02x\n"
++ " framing_code 0x%02x\n"
++ " magazine_and_packet_addr 0x%04x\n"
++ " data_block 0x%02x 0x%02x 0x%02x 0x%02x\n",
++ buf[p], buf[p+1],
++ buf[p+2] >> 6,
++ (buf[p+2] >> 5) & 1,
++ buf[p+2] & 0x1f,
++ buf[p+3],
++ (buf[p+4] << 8) | buf[p+5],
++ buf[p+6], buf[p+7], buf[p+8], buf[p+9]);
++#endif
++ for (i = 0; i < sizeof(data); i++)
++ data[i] = byterev8[buf[p+4+i]];
++ /* note: we should probably check for missing lines and then
++ * call out_of_sync(vbi); and/or vbi_reset(vbi); */
++ vt_line(vbi, data);
++ }
++}
++
++static unsigned int rawptr;
++
++static void dvb_handler(struct vbi *vbi, int fd)
++{
++ /* PES packet start code prefix and stream_id == private_stream_1 */
++ static const u_int8_t peshdr[4] = { 0x00, 0x00, 0x01, 0xbd };
++ u_int8_t *bp;
++ int n;
++ unsigned int p, i, len;
++ u_int16_t rpid;
++ u_int32_t crc, crccomp;
++
++ if (rawptr >= (unsigned int)rawbuf_size)
++ rawptr = 0;
++ n = read(vbi->fd, rawbuf + rawptr, rawbuf_size - rawptr);
++ if (n <= 0)
++ return;
++ rawptr += n;
++ if (rawptr < 6)
++ return;
++ if (memcmp(rawbuf, peshdr, sizeof(peshdr))) {
++ bp = memmem(rawbuf, rawptr, peshdr, sizeof(peshdr));
++ if (!bp)
++ return;
++ rawptr -= (bp - rawbuf);
++ memmove(rawbuf, bp, rawptr);
++ if (rawptr < 6)
++ return;
++ }
++ len = (rawbuf[4] << 8) | rawbuf[5];
++ if (len < 9) {
++ rawptr = 0;
++ return;
++ }
++ if (rawptr < len + 6)
++ return;
++ p = 9 + rawbuf[8];
++#if 0
++ for (i = 0; i < len - p; i++) {
++ if (!(i & 15))
++ printf("\n%04x:", i);
++ printf(" %02x", rawbuf[p + i]);
++ }
++ printf("\n");
++#endif
++ if (!dl_empty(vbi->clients))
++ dvb_handle_pes_payload(vbi, rawbuf + p, len - p);
++ rawptr -= len;
++ if (rawptr)
++ memmove(rawbuf, rawbuf + len, rawptr);
++}
++
++
++static int vbi_dvb_open(struct vbi *vbi, const char *vbi_name,
++ const char *channel, char *outfile, u_int16_t sid, int ttpid)
++{
++ struct {
++ u_int16_t pmtpid;
++ u_int16_t ttpid;
++ u_int16_t service_id;
++ u_int8_t service_type;
++ char service_provider_name[64];
++ char service_name[64];
++ u_int8_t txtlang[3];
++ u_int8_t txttype;
++ u_int8_t txtmagazine;
++ u_int8_t txtpage;
++ } progtbl[16], *progp;
++ u_int8_t tbl[4096];
++ u_int8_t * ppname, * psname, pncode, sncode, pnlen, snlen;
++ int r;
++ FILE *ofd;
++ unsigned int i, j, k, l, progcnt = 0;
++ struct dmx_pes_filter_params filterpar;
++
++ /* open DVB demux device */
++ if (!vbi_name)
++ vbi_name = "/dev/dvb/adapter0/demux0";
++ if ((vbi->fd = open(vbi_name, O_RDWR)) == -1) {
++ error("cannot open demux device %s", vbi_name);
++ return -1;
++ }
++ memset(progtbl, 0, sizeof(progtbl));
++ if (ttpid >= 0x15 && ttpid < 0x1fff) {
++ vbi->ttpid = ttpid;
++ printf("Using command line specified teletext PID 0x%x\n",
++ vbi->ttpid);
++ goto ttpidfound;
++ }
++ /* parse PAT to enumerate services and to find the PMT PIDs */
++ r = dvb_get_table(vbi->fd, 0, 0, tbl, sizeof(tbl));
++ if (r == -1)
++ goto outerr;
++ if (!(tbl[5] & 1)) {
++ error("PAT not active (current_next_indicator == 0)");
++ goto outerr;
++ }
++ if (tbl[6] != 0 || tbl[7] != 0) {
++ error("PAT has multiple sections");
++ goto outerr;
++ }
++ if (r < 13) {
++ error("PAT too short\n");
++ goto outerr;
++ }
++ r -= 13;
++ for (i = 0; i < (unsigned)r; i += 4) {
++ if (progcnt >= sizeof(progtbl)/sizeof(progtbl[0])) {
++ error("Program table overflow");
++ goto outerr;
++ }
++ progtbl[progcnt].service_id = (tbl[8 + i] << 8) | tbl[9 + i];
++ if (!progtbl[progcnt].service_id) /* this is the NIT pointer */
++ continue;
++ progtbl[progcnt].pmtpid = ((tbl[10 + i] << 8) | tbl[11 + i])
++ & 0x1fff;
++ progcnt++;
++ }
++ /* find the SDT to get the station names */
++ r = dvb_get_table(vbi->fd, 0x11, 0x42, tbl, sizeof(tbl));
++ if (r == -1)
++ goto outerr;
++ if (!(tbl[5] & 1)) {
++ error("SDT not active (current_next_indicator == 0)");
++ goto outerr;
++ }
++ if (tbl[6] != 0 || tbl[7] != 0) {
++ error("SDT has multiple sections");
++ goto outerr;
++ }
++ if (r < 12) {
++ error("SDT too short\n");
++ goto outerr;
++ }
++ i = 11;
++ while (i < (unsigned)r - 1) {
++ k = (tbl[i] << 8) | tbl[i+1]; /* service ID */
++ progp = NULL;
++ for (j = 0; j < progcnt; j++)
++ if (progtbl[j].service_id == k) {
++ progp = &progtbl[j];
++ break;
++ }
++ j = i + 5;
++ i = j + (((tbl[i+3] << 8) | tbl[i+4]) & 0x0fff);
++ if (!progp) {
++ error("SDT: service_id 0x%x not in PAT\n", k);
++ continue;
++ }
++ while (j < i) {
++ switch (tbl[j]) {
++ case 0x48: // service descriptor
++ k = j + 4 + tbl[j + 3];
++ progp->service_type = tbl[j+2];
++ ppname = tbl+j+4 ; // points to 1st byte of provider_name
++ pncode = *ppname ; // 1st byte of provider_name
++ pnlen = tbl[j+3]; // length of provider_name
++ psname = tbl+k+1 ; // points to 1st byte of service_name
++ sncode = *psname ; // 1st byte of service_name
++ snlen = tbl[k] ; // length of service_name
++ if (pncode >= 0x20) {
++ pncode = 0 ; // default character set Latin alphabet fig.A.1
++ } else {
++ ppname++ ; pnlen-- ;
++ // character code from table A.3 1st byte = ctrl-code
++ }
++ if (sncode >= 0x20) {
++ sncode = 0 ; // default character set Latin alphabet fig.A.1
++ } else {
++ psname++ ; snlen-- ;
++ // character code from table A.3 ; 1st byte = ctrl-code
++ }
++ snprintf(progp->service_provider_name,
++ sizeof(progp->service_provider_name), "%.*s", pnlen, ppname);
++ snprintf(progp->service_name,
++ sizeof(progp->service_name), "%.*s", snlen, psname); break;
++ }
++ j += 2 + tbl[j + 1]; // next descriptor
++ }
++ }
++ /* parse PMT's to find Teletext Services */
++ for (l = 0; l < progcnt; l++) {
++ progtbl[l].ttpid = 0x1fff;
++ if (progtbl[l].service_type != 0x01 || /* not digital TV */
++ progtbl[l].pmtpid < 0x15 || /* PMT PID sanity check */
++ progtbl[l].pmtpid >= 0x1fff)
++ continue;
++ r = dvb_get_table(vbi->fd, progtbl[l].pmtpid, 0x02, tbl,
++ sizeof(tbl));
++ if (r == -1)
++ goto outerr;
++ if (!(tbl[5] & 1)) { error \
++ ("PMT pid 0x%x not active (current_next_indicator == 0)",
++ progtbl[l].pmtpid);
++ goto outerr;
++ }
++ if (tbl[6] != 0 || tbl[7] != 0) {
++ error("PMT pid 0x%x has multiple sections",
++ progtbl[l].pmtpid);
++ goto outerr;
++ }
++ if (r < 13) {
++ error("PMT pid 0x%x too short\n", progtbl[l].pmtpid);
++ goto outerr;
++ }
++ i = 12 + (((tbl[10] << 8) | tbl[11]) & 0x0fff);
++ /* skip program info section */
++ while (i <= (unsigned)r-6) {
++ j = i + 5;
++ i = j + (((tbl[i + 3] << 8) | tbl[i + 4]) & 0x0fff);
++ if (tbl[j - 5] != 0x06)
++ /* teletext streams have type 0x06 */
++ continue;
++ k = ((tbl[j - 4] << 8) | tbl[j - 3]) & 0x1fff;
++ /* elementary PID - save until we know if it's teletext PID */
++ while (j < i) {
++ switch (tbl[j]) {
++ case 0x56: /* EBU teletext descriptor */
++ progtbl[l].txtlang[0] = tbl[j + 2];
++ progtbl[l].txtlang[1] = tbl[j + 3];
++ progtbl[l].txtlang[2] = tbl[j + 4];
++ progtbl[l].txttype = tbl[j + 5] >> 3;
++ progtbl[l].txtmagazine = tbl[j + 5] & 7;
++ progtbl[l].txtpage = tbl[j + 6];
++ progtbl[l].ttpid = k;
++ break;
++ }
++ j += 2 + tbl[j + 1];
++ }
++ }
++ }
++
++ printf \
++ ("sid:pmtpid:ttpid:type:provider:name:language:texttype:magazine:page\n\n");
++ for (i = 0; i < progcnt; i++) {
++ printf("%d:%d:%d:%d:%s:%s:lang=%.3s:type=%d:magazine=%1u:page=%3u\n",
++ progtbl[i].service_id, progtbl[i].pmtpid, progtbl[i].ttpid,
++ progtbl[i].service_type, progtbl[i].service_provider_name,
++ progtbl[i].service_name, progtbl[i].txtlang, progtbl[i].txttype,
++ progtbl[i].txtmagazine, progtbl[i].txtpage);
++ }
++
++ if (*outfile) {
++ ofd = fopen(outfile,"w") ;
++ if (ofd == NULL) { error("cannot open outfile\n"); goto outerr ; }
++ for (i = 0; i < progcnt; i++) {
++ if (progtbl[i].ttpid == 0x1fff) continue ; // service without teletext
++ fprintf(ofd,"%d:%d:%s:%s:lang=%.3s\n",
++ progtbl[i].service_id, progtbl[i].ttpid, progtbl[i].service_provider_name,
++ progtbl[i].service_name, progtbl[i].txtlang);
++ }
++ fclose(ofd) ;
++ }
++
++ progp = NULL;
++
++ if (channel) {
++ j = strlen(channel);
++ for (i = 0; i < progcnt; i++)
++ if (!strncmp(progtbl[i].service_name, channel, j)
++ && progtbl[i].ttpid != 0x1fff) { progp = &progtbl[i];
++ break ;
++ }
++ }
++
++ if (channel && !progp) {
++ j = strlen(channel);
++ for (i = 0; i < progcnt; i++)
++ if (!strncasecmp(progtbl[i].service_name, channel, j)
++ && progtbl[i].ttpid != 0x1fff) { progp = &progtbl[i];
++ break ;
++ }
++ }
++
++ if (sid) {
++ for (i = 0; i < progcnt; i++) {
++ if ((progtbl[i].service_id == sid) && (progtbl[i].ttpid != 0x1fff)) {
++ progp = &progtbl[i]; break ; }
++ }
++ }
++
++ if (!progp) {
++ for (i = 0; i < progcnt; i++)
++ if (progtbl[i].ttpid != 0x1fff) {
++ progp = &progtbl[i]; break ;
++ }
++ }
++
++ printf("\nUsing: Service ID = %d ; PMT PID = %d ; TXT PID = %d ;\n"
++ "Service type = %d ; Provider Name = %s ; Service name = %s ;\n"
++ "language = %.3s ; Text type = %d ; Text Magazine = %1u ; Text page = %3u\n",
++ progp->service_id, progp->pmtpid, progp->ttpid, progp->service_type,
++ progp->service_provider_name, progp->service_name, progp->txtlang,
++ progp->txttype, progp->txtmagazine, progp->txtpage);
++ vbi->ttpid = progp->ttpid;
++
++ ttpidfound:
++ rawbuf = malloc(rawbuf_size = 8192);
++ if (!rawbuf)
++ goto outerr;
++ rawptr = 0;
++#if 0
++ close(vbi->fd);
++ if ((vbi->fd = open(vbi_name, O_RDWR)) == -1) {
++ error("cannot open demux device %s", vbi_name);
++ return -1;
++ }
++#endif
++ memset(&filterpar, 0, sizeof(filterpar));
++ filterpar.pid = vbi->ttpid;
++ filterpar.input = DMX_IN_FRONTEND;
++ filterpar.output = DMX_OUT_TAP;
++ filterpar.pes_type = DMX_PES_OTHER;
++ filterpar.flags = DMX_IMMEDIATE_START;
++ if (ioctl(vbi->fd, DMX_SET_PES_FILTER, &filterpar) < 0) {
++ error("ioctl: DMX_SET_PES_FILTER %s (%u)", strerror(errno), errno);
++ goto outerr;
++ }
++ return 0;
++
++ outerr:
++ close(vbi->fd);
++ vbi->fd = -1;
++ return -1;
++}
++
++
++struct vbi *open_null_vbi(struct cache *ca)
++{
++ static int inited = 0;
++ struct vbi *vbi;
++
++ if (not inited)
++ lang_init();
++ inited = 1;
++
++ vbi = malloc(sizeof(*vbi));
++ if (!vbi)
++ {
++ error("out of memory");
++ goto fail1;
++ }
++
++ vbi->fd = open("/dev/null", O_RDONLY);
++ if (vbi->fd == -1)
++ {
++ error("cannot open null device");
++ goto fail2;
++ }
++
++ vbi->ttpid = -1;
++ out_of_sync(vbi);
++ vbi->ppage = vbi->rpage;
++ fdset_add_fd(fds, vbi->fd, vbi_handler, vbi);
++ return vbi;
++
++fail3:
++ close(vbi->fd);
++fail2:
++ free(vbi);
++fail1:
++ return 0;
++}
++
++
++void send_errmsg(struct vbi *vbi, char *errmsg, ...)
++{
++ va_list args;
++ if (errmsg == NULL || *errmsg == '\0')
++ return;
++ va_start(args, errmsg);
++ char *buff = NULL;
++ if (vasprintf(&buff, errmsg, args) < 0)
++ buff = NULL;
++ va_end(args);
++ if(buff == NULL)
++ out_of_mem(-1);
++ vbi_send(vbi, EV_ERR, 0, 0, 0, buff);
++}
+diff -r af23d23c278b util/alevt/vbi.h
+--- /dev/null Thu Jan 01 00:00:00 1970 +0000
++++ b/util/alevt/vbi.h Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,47 @@
++#ifndef VBI_H
++#define VBI_H
++
++#include "vt.h"
++#include "dllist.h"
++#include "cache.h"
++#include "lang.h"
++
++#define PLL_ADJUST 4
++
++struct raw_page
++{
++ struct vt_page page[1];
++ struct enhance enh[1];
++};
++
++struct vbi
++{
++ int fd;
++ struct cache *cache;
++ struct dl_head clients[1];
++ // page assembly
++ struct raw_page rpage[8]; // one for each magazin
++ struct raw_page *ppage; // points to page of previous pkt0
++ // DVB stuff
++ unsigned int ttpid;
++ u_int16_t sid;
++};
++
++struct vbi_client
++{
++ struct dl_node node[1];
++ void (*handler)(void *data, struct vt_event *ev);
++ void *data;
++};
++
++struct vbi *vbi_open(char *vbi_dev_name, struct cache *ca,
++ const char *channel, char *outfile, u_int16_t sid, int ttpid);
++void vbi_close(struct vbi *vbi);
++void vbi_reset(struct vbi *vbi);
++int vbi_add_handler(struct vbi *vbi, void *handler, void *data);
++void vbi_del_handler(struct vbi *vbi, void *handler, void *data);
++struct vt_page *vbi_query_page(struct vbi *vbi, int pgno, int subno);
++
++struct vbi *open_null_vbi(struct cache *ca);
++void send_errmsg(struct vbi *vbi, char *errmsg, ...);
++#endif
+diff -r af23d23c278b util/alevt/vt.h
+--- /dev/null Thu Jan 01 00:00:00 1970 +0000
++++ b/util/alevt/vt.h Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,62 @@
++#ifndef VT_H
++#define VT_H
++
++#include "misc.h"
++
++#define W 40
++#define H 25
++#define BAD_CHAR 0xb8 // substitute for chars with bad parity
++
++struct vt_event
++{
++ int type;
++ void *resource; /* struct xio_win *, struct vbi *, ... */
++ int i1, i2, i3, i4;
++ void *p1;
++};
++
++#define EV_CLOSE 1
++#define EV_KEY 2 // i1:KEY_xxx i2:shift-flag
++#define EV_MOUSE 3 // i1:button i2:shift-flag i3:x i4:y
++#define EV_SELECTION 4 // i1:len p1:data
++#define EV_PAGE 5 // p1:vt_page i1:query-flag
++#define EV_HEADER 6 // i1:pgno i2:subno i3:flags p1:data
++#define EV_XPACKET 7 // i1:mag i2:pkt i3:errors p1:data
++#define EV_RESET 8 // ./.
++#define EV_TIMER 9 // ./.
++#define EV_ERR 10 // p1: errmsg
++#define KEY_F(i) (1000+i)
++#define KEY_LEFT 2001
++#define KEY_RIGHT 2002
++#define KEY_UP 2003
++#define KEY_DOWN 2004
++#define KEY_PUP 2005
++#define KEY_PDOWN 2006
++#define KEY_DEL 2007
++#define KEY_INS 2008
++
++struct vt_page
++{
++ int pgno, subno; // the wanted page number
++ int lang; // language code
++ int flags; // misc flags (see PG_xxx below)
++ int errors; // number of single bit errors in page
++ u32 lines; // 1 bit for each line received
++ u8 data[25][40]; // page contents
++ int flof; // page has FastText links
++ struct {
++ int pgno;
++ int subno;
++ } link[6]; // FastText links (FLOF)
++};
++
++#define PG_SUPPHEADER 0x01 // C7 row 0 is not to be displayed
++#define PG_OUTOFSEQ 0x04 // C9 page out of numerical order
++#define PG_NODISPLAY 0x08 // C10 rows 1-24 is not to be displayed
++#define PG_MAGSERIAL 0x10 // C11 serial trans. (any pkt0 terminates page)
++#define PG_ERASE 0x20 // C4 clear previously stored lines
++#define PG_NEWSFLASH 0x40 // C5 box it and insert into normal video pict.
++#define PG_SUBTITLE 0x80 // C6 box it and insert into normal video pict.
++#define PG_ACTIVE 0x100 // currently fetching this page
++#define ANY_SUB 0x3f7f // universal subpage number
++#endif
+diff -r af23d23c278b util/alevt/vt900.out
+--- /dev/null Thu Jan 01 00:00:00 1970 +0000
++++ b/util/alevt/vt900.out Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,29 @@
++#ifndef HELP_HEADER
++" \6AleVT Online Help System ",
++" \22`p0`0 p `0pppp ",
++"\4\35\22\177 \177j5`p \177 j5 j5 \7Version \34",
++"\4\35\22\177,\177j5\177.! +t>! j5 \7 1.7.0 \34",
++" \22# #\42!\42# \42 \42! ",
++#else
++HELP_HEADER
++#endif
++" ",
++"\6\15Contents: ",
++"\6\15Contents: ",
++"\24 #################################### ",
++" ",
++" \3\177\6Starting alevt . . . . . . 902 ",
++" ",
++" \3\177\6Copying/Warranty . . . . . 904 ",
++" ",
++" \3\177\6The Status Line . . . . . 905 ",
++" ",
++" \3\177\6Selecting Pages . . . . . 907 ",
++" ",
++" \3\177\6QuickClick Page . . . . . 915 ",
++" ",
++"\24 pppppppppppppppppppppppppppppppppppp ",
++" (Click to select a page) ",
++" ",
++"\4\35\7 Next 901 \34",
++"\1Page 100 \2Page 200 \3Page 300 \6Page 400\34",
+diff -r af23d23c278b util/alevt/vt901.out
+--- /dev/null Thu Jan 01 00:00:00 1970 +0000
++++ b/util/alevt/vt901.out Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,29 @@
++#ifndef HELP_HEADER
++" \6AleVT Online Help System ",
++" \22`p0`0 p `0pppp ",
++"\4\35\22\177 \177j5`p \177 j5 j5 \7Version \34",
++"\4\35\22\177,\177j5\177.! +t>! j5 \7 1.7.0 \34",
++" \22# #\42!\42# \42 \42! ",
++#else
++HELP_HEADER
++#endif
++" ",
++"\6\15Contents: ",
++"\6\15Contents: ",
++"\24 #################################### ",
++" ",
++"\6 \3\177\6FastText Menu . . . . . . 909 ",
++"\6 ",
++"\6 \3\177\6Keyboard Commands . . . . 910 ",
++"\6 ",
++"\6 \3\177\6Starting alevt-cap . . . . 912 ",
++"\6 ",
++"\6 \3\177\6Starting alevt-date . . . 914 ",
++"\6 ",
++"\6 \3\177\6QuickClick Page . . . . . 915 ",
++" ",
++"\24 pppppppppppppppppppppppppppppppppppp ",
++" (Click to select a page) ",
++" ",
++"\4\35\7Back 900 Index 900 Next 902 \34",
++"\1Page 100 \2Page 200 \3Page 300 \6Page 400\34",
+diff -r af23d23c278b util/alevt/vt902.out
+--- /dev/null Thu Jan 01 00:00:00 1970 +0000
++++ b/util/alevt/vt902.out Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,29 @@
++#ifndef HELP_HEADER
++" \6AleVT Online Help System ",
++" \22`p0`0 p `0pppp ",
++"\4\35\22\177 \177j5`p \177 j5 j5 \7 Version \34",
++"\4\35\22\177,\177j5\177.! +t>! j5 \7 1.7.0 \34",
++" \22# #\42!\42# \42 \42! ",
++#else
++HELP_HEADER
++#endif
++" ",
++"\6\15Starting alevt: ",
++"\6\15Starting alevt: ",
++"\24 #################################### ",
++"\6 $\7alevt\6[options] Default: ",
++" ",
++" -c\6<channel name> (none;dvb only) ",
++" -ch -child\6<ppp.ss> (none) ",
++" -cs -charset \6latin-1 ",
++" \6<latin-1/2/koi8-r/ ",
++" \6iso8859-7> ",
++" -h -help ",
++" ",
++" ",
++" ",
++"\24 pppppppppppppppppppppppppppppppppppp ",
++" ",
++" ",
++"\4\35\7Back 901 Index 900 Next 903 \34",
++"\1Page 100 \2Page 200 \3Page 300 \6Page 400\34",
+diff -r af23d23c278b util/alevt/vt903.out
+--- /dev/null Thu Jan 01 00:00:00 1970 +0000
++++ b/util/alevt/vt903.out Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,29 @@
++#ifndef HELP_HEADER
++" \6AleVT Online Help System ",
++" \22`p0`0 p `0pppp ",
++"\4\35\22\177 \177j5`p \177 j5 j5 \7Version \34",
++"\4\35\22\177,\177j5\177.! +t>! j5 \7 1.7.0 \34",
++" \22# #\42!\42# \42 \42! ",
++#else
++HELP_HEADER
++#endif
++" ",
++"\6\15Starting alevt: ",
++"\6\15Starting alevt: ",
++"\24 #################################### ",
++"\6 $\7alevt\6[options] Default: ",
++" -o\6<outfile> (none;dvb only) ",
++" -p -parent\6<ppp.ss> 900 ",
++" -s -sid\6<sid> (none;dvb only) ",
++" -t -ttpid\6<ttpid> (none;dvb only) ",
++" -v -vbi\6<vbidev> /dev/vbi ",
++" \6/dev/vbi0 ",
++" \6/dev/video0 ",
++" \6/dev/dvb/adapter0/demux0 ",
++" ",
++" ",
++"\24 pppppppppppppppppppppppppppppppppppp ",
++" ",
++" ",
++"\4\35\7Back 902 Index 900 Next 904 \34",
++"\1Page 100 \2Page 200 \3Page 300 \6Page 400\34",
+diff -r af23d23c278b util/alevt/vt904.out
+--- /dev/null Thu Jan 01 00:00:00 1970 +0000
++++ b/util/alevt/vt904.out Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,29 @@
++#ifndef HELP_HEADER
++" \6AleVT Online Help System ",
++" \22`p0`0 p `0pppp ",
++"\4\35\22\177 \177j5`p \177 j5 j5 \7Version \34",
++"\4\35\22\177,\177j5\177.! +t>! j5 \7 1.7.0 \34",
++" \22# #\42!\42# \42 \42! ",
++#else
++HELP_HEADER
++#endif
++" ",
++"\6\15Copying: ",
++"\6\15Copying: ",
++"\24 #################################### ",
++"\6 2002-07 Edgar Toernig (froese@gmx.de) ",
++"\6 All Rights Reserved. ",
++"\6 ",
++"\6 This program is free software; you ",
++"\6 can redistribute it and/or modify it ",
++"\6 under the terms of the GNU General ",
++"\6 Public License Version 2 as published ",
++"\6 by the Free Software Foundation. ",
++"\6 ",
++"\6 This program is distributed in the ",
++"\6 hope that it will be useful, but ",
++"\6\7without any warranty.\6See the GNU ",
++"\6 General Public License for details. ",
++" ",
++"\4\35\7Back 903 Index 900 Next 905 \34",
++"\1Page 100 \2Page 200 \3Page 300 \6Page 400\34",
+diff -r af23d23c278b util/alevt/vt905.out
+--- /dev/null Thu Jan 01 00:00:00 1970 +0000
++++ b/util/alevt/vt905.out Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,29 @@
++#ifndef HELP_HEADER
++" \6AleVT Online Help System ",
++" \22`p0`0 p `0pppp ",
++"\4\35\22\177 \177j5`p \177 j5 j5 \7Version \34",
++"\4\35\22\177,\177j5\177.! +t>! j5 \7 1.7.0 \34",
++" \22# #\42!\42# \42 \42! ",
++#else
++HELP_HEADER
++#endif
++" ",
++"\6\15Status Line: ",
++"\6\15Status Line: ",
++"\24 #################################### ",
++"\6 The top line of each window is the ",
++"\6 status line. On the left it shows ",
++"\6 the current page number (CPN) and ",
++"\6 some flags. The rest of the line ",
++"\6 is the running header sent by the ",
++"\6 TV station. ",
++"\6 ",
++"\6 If the CPN is red, the program is ",
++"\6 searching for that page. If it's ",
++"\6 green, it's the PN of the currently ",
++"\6 displayed page. ",
++"\24 pppppppppppppppppppppppppppppppppppp ",
++" ",
++" ",
++"\4\35\7Back 904 Index 900 Next 906 \34",
++"\1Page 100 \2Page 200 \3Page 300 \6Page 400\34",
+diff -r af23d23c278b util/alevt/vt906.out
+--- /dev/null Thu Jan 01 00:00:00 1970 +0000
++++ b/util/alevt/vt906.out Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,29 @@
++#ifndef HELP_HEADER
++" \6AleVT Online Help System ",
++" \22`p0`0 p `0pppp ",
++"\4\35\22\177 \177j5`p \177 j5 j5 \7Version \34",
++"\4\35\22\177,\177j5\177.! +t>! j5 \7 1.7.0 \34",
++" \22# #\42!\42# \42 \42! ",
++#else
++HELP_HEADER
++#endif
++" ",
++"\6\15Status Line: \14\5\30 ",
++"\6\15Status Line: \14\5\30 ",
++"\24 #################################### ",
++"\6 An\2H\6behind the CPN indicates that ",
++"\6 the page is on hold. This inhibits ",
++"\6 subpage cycling and page updates. A ",
++"\6 click on the CPN toggles the\2H\6flag.",
++" ",
++"\6 A\5*\6indicates that the page ",
++"\6 contains concealed text. Clicking on ",
++"\6 the\5*\6reveals that text. ",
++" ",
++"\6 A CPN in the form\2Sxx\6is shown if a ",
++"\6 specific subpage is selected. ",
++"\24 pppppppppppppppppppppppppppppppppppp ",
++" ",
++" ",
++"\4\35\7Back 905 Index 900 Next 907 \34",
++"\1Page 100 \2Page 200 \3Page 300 \6Page 400\34",
+diff -r af23d23c278b util/alevt/vt907.out
+--- /dev/null Thu Jan 01 00:00:00 1970 +0000
++++ b/util/alevt/vt907.out Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,29 @@
++#ifndef HELP_HEADER
++" \6AleVT Online Help System ",
++" \22`p0`0 p `0pppp ",
++"\4\35\22\177 \177j5`p \177 j5 j5 \7Version \34",
++"\4\35\22\177,\177j5\177.! +t>! j5 \7 1.7.0 \34",
++" \22# #\42!\42# \42 \42! ",
++#else
++HELP_HEADER
++#endif
++" ",
++"\6\15Selecting Pages: ",
++"\6\15Selecting Pages: ",
++"\24 #################################### ",
++"\6 To select a specific page, you may ",
++"\6 either enter the page number with ",
++"\6 the keyboard or click with the\7left ",
++"\6 mouse button on a page number ",
++"\6 somewhere on the screen. ",
++"\6 ",
++"\6 Clicking with the\7middle\6button will ",
++"\6 show the page in a child window. If ",
++"\6 there is no child window, a new one ",
++"\6 will be opened. ",
++"\6 ",
++"\24 pppppppppppppppppppppppppppppppppppp ",
++" ",
++" ",
++"\4\35\7Back 906 Index 900 Next 908 \34",
++"\1Page 100 \2Page 200 \3Page 300 \6Page 400\34",
+diff -r af23d23c278b util/alevt/vt908.out
+--- /dev/null Thu Jan 01 00:00:00 1970 +0000
++++ b/util/alevt/vt908.out Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,29 @@
++#ifndef HELP_HEADER
++" \6AleVT Online Help System ",
++" \22`p0`0 p `0pppp ",
++"\4\35\22\177 \177j5`p \177 j5 j5 \7Version \34",
++"\4\35\22\177,\177j5\177.! +t>! j5 \7 1.7.0 \34",
++" \22# #\42!\42# \42 \42! ",
++#else
++HELP_HEADER
++#endif
++" ",
++"\6\15Selecting Pages: ",
++"\6\15Selecting Pages: ",
++"\24 #################################### ",
++"\6 AleVT also recognizes something like ",
++"\3 3/7\6as a valid page number. Clicking ",
++"\6 with the\7left\6button will cycle to ",
++"\6 the next subpage of the current page. ",
++"\6 The\7middle\6buttons cycles backwards. ",
++"\6 ",
++"\6 For each window a history of ",
++"\6 recently visited pages is kept. ",
++"\6 Pressing the\7right\6mouse button will ",
++"\6 take you back to the previous page. ",
++"\6 ",
++"\24 pppppppppppppppppppppppppppppppppppp ",
++" ",
++" ",
++"\4\35\7Back 907 Index 900 Next 909 \34",
++"\1Page 100 \2Page 200 \3Page 300 \6Page 400\34",
+diff -r af23d23c278b util/alevt/vt909.out
+--- /dev/null Thu Jan 01 00:00:00 1970 +0000
++++ b/util/alevt/vt909.out Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,29 @@
++#ifndef HELP_HEADER
++" \6AleVT Online Help System ",
++" \22`p0`0 p `0pppp ",
++"\4\35\22\177 \177j5`p \177 j5 j5 \7Version \34",
++"\4\35\22\177,\177j5\177.! +t>! j5 \7 1.7.0 \34",
++" \22# #\42!\42# \42 \42! ",
++#else
++HELP_HEADER
++#endif
++" ",
++"\6\15FastText Menu: ",
++"\6\15FastText Menu: ",
++"\24 #################################### ",
++"\6 The last line of each window shows ",
++"\6 the FastText Menu (only if one is ",
++"\6 transmitted for that page). ",
++"\6 ",
++"\6 It consists of up to four colored ",
++"\6 labels. You may click on a label ",
++"\6 or press one of the function keys ",
++"\6 F1-F4 to go to the associated page. ",
++"\6 ",
++"\6 For the 5th (white) key present on ",
++"\6 some remote controls press F5. ",
++"\24 pppppppppppppppppppppppppppppppppppp ",
++" ",
++" ",
++"\4\35\7Back 908 Index 900 Next 910 \34",
++"\1Page 100 \2Page 200 \3Page 300 \6Page 400\34",
+diff -r af23d23c278b util/alevt/vt910.out
+--- /dev/null Thu Jan 01 00:00:00 1970 +0000
++++ b/util/alevt/vt910.out Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,29 @@
++#ifndef HELP_HEADER
++" \6AleVT Online Help System ",
++" \22`p0`0 p `0pppp ",
++"\4\35\22\177 \177j5`p \177 j5 j5 \7Version \34",
++"\4\35\22\177,\177j5\177.! +t>! j5 \7 1.7.0 \34",
++" \22# #\42!\42# \42 \42! ",
++#else
++HELP_HEADER
++#endif
++" ",
++"\6\15Keyboard Commands: ",
++"\6\15Keyboard Commands: ",
++"\24 #################################### ",
++" 0\6-\0079 \6Enter page number ",
++" q\6or\7ESC \6Close window ",
++" h \6Goto page 900 (help page) ",
++" i \6Goto page 100 (index page) ",
++" o \6Open a new window ",
++" SPACE \6Hold page ",
++" RIGHT \6Goto next page ",
++" LEFT \6Goto previous page ",
++" DOWN \6Goto next subpage ",
++" UP \6Goto previous subpage ",
++" BACKSPACE\6Previous page from history ",
++"\24 pppppppppppppppppppppppppppppppppppp ",
++" ",
++" ",
++"\4\35\7Back 909 Index 900 Next 911 \34",
++"\1Page 100 \2Page 200 \3Page 300 \6Page 400\34",
+diff -r af23d23c278b util/alevt/vt911.out
+--- /dev/null Thu Jan 01 00:00:00 1970 +0000
++++ b/util/alevt/vt911.out Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,29 @@
++#ifndef HELP_HEADER
++" \6AleVT Online Help System ",
++" \22`p0`0 p `0pppp ",
++"\4\35\22\177 \177j5`p \177 j5 j5 \7 Version \34",
++"\4\35\22\177,\177j5\177.! +t>! j5 \007 1.7.0 \34",
++" \22# #\42!\42# \42 \42! ",
++#else
++HELP_HEADER
++#endif
++" ",
++"\6\15Keyboard Commands: ",
++"\6\15Keyboard Commands: ",
++"\24 #################################### ",
++" s \6Save page to file ",
++" c \6Clear page cache ",
++" r \6Reveal concealed text ",
++" F1\6-\7F5 \6FastText keys ",
++" /\6and\7? \6Search forward/backward ",
++" n\6and\7N \6Search next/previous ",
++" f\6and\7F \6Fine tune the decoder ",
++" e \6Error reduction on/off ",
++" b \6Error bell on/off ",
++"\6 Holding the\7shift\6key while pressing ",
++"\6 one of the\7cursor\6keys allows ",
++"\6 selecting the 'hex' pages (Ex.: 1f1). ",
++"\24 pppppppppppppppppppppppppppppppppppp ",
++" ",
++"\4\35\7Back 910 Index 900 Next 912 \34",
++"\1Page 100 \2Page 200 \3Page 300 \6Page 400\34",
+diff -r af23d23c278b util/alevt/vt912.out
+--- /dev/null Thu Jan 01 00:00:00 1970 +0000
++++ b/util/alevt/vt912.out Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,29 @@
++#ifndef HELP_HEADER
++" \6AleVT Online Help System ",
++" \22`p0`0 p `0pppp ",
++"\4\35\22\177 \177j5`p \177 j5 j5 \7 Version \34",
++"\4\35\22\177,\177j5\177.! +t>! j5 \7 1.7.0 \34",
++" \22# #\42!\42# \42 \42! ",
++#else
++HELP_HEADER
++#endif
++" ",
++"\6\15Starting alevt-cap: ",
++"\6\15Starting alevt-cap: ",
++"\24 #################################### ",
++"\6 $\7alevt-cap\6[options] Default: ",
++" ",
++" -cs -charset \6latin-1 ",
++" \6<latin-1/2/koi8-r/ ",
++" \6iso8859-7> ",
++" -f -format \6ascii ",
++" \6<fmt,options> ",
++" -f help -format help ",
++" -h -help ",
++" -n -name \6<filename> ttext-%s.%e ",
++" ",
++"\24 pppppppppppppppppppppppppppppppppppp ",
++" ",
++" ",
++"\4\35\7Back 911 Index 900 Next 913 \34",
++"\1Page 100 \2Page 200 \3Page 300 \6Page 400\34",
+diff -r af23d23c278b util/alevt/vt913.out
+--- /dev/null Thu Jan 01 00:00:00 1970 +0000
++++ b/util/alevt/vt913.out Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,29 @@
++#ifndef HELP_HEADER
++" \6AleVT Online Help System ",
++" \22`p0`0 p `0pppp ",
++"\4\35\22\177 \177j5`p \177 j5 j5 \7 Version \34",
++"\4\35\22\177,\177j5\177.! +t>! j5 \7 1.7.0 \34",
++" \22# #\42!\42# \42 \42! ",
++#else
++HELP_HEADER
++#endif
++" ",
++"\6\15Starting alevt-cap: ",
++"\6\15Starting alevt-cap: ",
++"\24 #################################### ",
++"\6 $\7alevt-cap\6[options] Default: ",
++" ",
++" -s -sid\6<sid> (none;dvb only) ",
++" -t -ttpid\6<ttpid> (none;dvb only) ",
++" -to -timeout\6<secs> (none) ",
++" -v -vbi\6<vbidev> /dev/vbi ",
++" \6/dev/vbi0 ",
++" \6/dev/video0 ",
++" \6/dev/dvb/adapter0/demux0 ",
++" ",
++" ",
++"\24 pppppppppppppppppppppppppppppppppppp ",
++" ",
++" ",
++"\4\35\7Back 912 Index 900 Next 914 \34",
++"\1Page 100 \2Page 200 \3Page 300 \6Page 400\34",
+diff -r af23d23c278b util/alevt/vt914.out
+--- /dev/null Thu Jan 01 00:00:00 1970 +0000
++++ b/util/alevt/vt914.out Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,29 @@
++#ifndef HELP_HEADER
++" \6AleVT Online Help System ",
++" \22`p0`0 p `0pppp ",
++"\4\35\22\177 \177j5`p \177 j5 j5 \7 Version \34",
++"\4\35\22\177,\177j5\177.! +t>! j5 \7 1.7.0 \34",
++" \22# #\42!\42# \42 \42! ",
++#else
++HELP_HEADER
++#endif
++" ",
++"\6\15Starting alevt-date: ",
++"\6\15Starting alevt-date: ",
++"\24 #################################### ",
++"\6 $\7alevt-date\6[options] Default: ",
++" ",
++" -d -delta\6<max_secs> 7200 (2 hours) ",
++" -f -format\6<fmtstr> %c ",
++" -h -help ",
++" -s -set \6off ",
++" -to -timeout\6<seconds>(none) ",
++" -v -vbi\6<vbidev> /dev/vbi ",
++" \6/dev/vbi0 ",
++" \6/dev/video0 ",
++" \6/dev/dvb/adapter0/demux0 ",
++"\24 pppppppppppppppppppppppppppppppppppp ",
++" ",
++" ",
++"\4\35\7Back 913 Index 900 Next 915 \34",
++"\1Page 100 \2Page 200 \3Page 300 \6Page 400\34",
+diff -r af23d23c278b util/alevt/vt915.out
+--- /dev/null Thu Jan 01 00:00:00 1970 +0000
++++ b/util/alevt/vt915.out Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,29 @@
++#ifndef HELP_HEADER
++" \6AleVT Online Help System ",
++" \22`p0`0 p `0pppp ",
++"\4\35\22\177 \177j5`p \177 j5 j5 \7Version \34",
++"\4\35\22\177,\177j5\177.! +t>! j5 \7 1.7.0 \34",
++" \22# #\42!\42# \42 \42! ",
++#else
++HELP_HEADER
++#endif
++" ",
++"\6\15QuickClick: ",
++"\6\15QuickClick: ",
++"\24 #################################### ",
++"\6 100 200 300 400 500 600 700 800 ",
++"\6 101 201 301 401 501 601 701 801 ",
++"\6 110 210 310 410 510 610 710 810 ",
++"\6 120\006220 320 420 520 620 720 820 ",
++"\6 130 230 330 430 530 630 730 830 ",
++"\6 140\006240 340 440 540 640 740 840 ",
++"\6 150 250 350 450 550 650 750 850 ",
++"\6 160\006260 360 460 560 660 760 860 ",
++"\6 170 270 370 470 570 670 770 870 ",
++"\6 180\006280 380 480 580 680 780 880 ",
++"\6 190 290 390 490 590 690 790 890 ",
++"\24 pppppppppppppppppppppppppppppppppppp ",
++" ",
++" ",
++"\4\35\7 Index 900 \34",
++"\1Page 100 \2Page 200 \3Page 300 \6Page 400\34",
+diff -r af23d23c278b util/alevt/vtxt-iso8859-7.bdf
+--- /dev/null Thu Jan 01 00:00:00 1970 +0000
++++ b/util/alevt/vtxt-iso8859-7.bdf Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,5768 @@
++STARTFONT 2.1
++FONT -alevt-teletext-medium-r-normal--16-1-75-75-c-90-fontspecific-1
++SIZE 1 75 75
++FONTBOUNDINGBOX 9 16 0 -4
++STARTPROPERTIES 10
++POINT_SIZE 1
++PIXEL_SIZE 16
++RESOLUTION_X 75
++RESOLUTION_Y 75
++FONT_ASCENT 12
++FONT_DESCENT 4
++AVERAGE_WIDTH 90
++SPACING "C"
++_XMBDFED_INFO "Edited with xmbdfed 4.5."
++FONT "vtxt"
++ENDPROPERTIES
++CHARS 250
++STARTCHAR char0
++ENCODING 0
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char1
++ENCODING 1
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++F000
++F000
++F000
++F000
++F000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char2
++ENCODING 2
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0F80
++0F80
++0F80
++0F80
++0F80
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char1
++ENCODING 3
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++FF80
++FF80
++FF80
++FF80
++FF80
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char0
++ENCODING 4
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++F000
++F000
++F000
++F000
++F000
++F000
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char1
++ENCODING 5
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char2
++ENCODING 6
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0F80
++0F80
++0F80
++0F80
++0F80
++F000
++F000
++F000
++F000
++F000
++F000
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char1
++ENCODING 7
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++FF80
++FF80
++FF80
++FF80
++FF80
++F000
++F000
++F000
++F000
++F000
++F000
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char0
++ENCODING 8
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char1
++ENCODING 9
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++F000
++F000
++F000
++F000
++F000
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char2
++ENCODING 10
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char1
++ENCODING 11
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++FF80
++FF80
++FF80
++FF80
++FF80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char0
++ENCODING 12
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char1
++ENCODING 13
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++F000
++F000
++F000
++F000
++F000
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char2
++ENCODING 14
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0F80
++0F80
++0F80
++0F80
++0F80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char1
++ENCODING 15
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char0
++ENCODING 16
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++F000
++F000
++F000
++0000
++0000
++ENDCHAR
++STARTCHAR char1
++ENCODING 17
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++F000
++F000
++F000
++F000
++F000
++0000
++0000
++0000
++0000
++0000
++0000
++F000
++F000
++F000
++0000
++0000
++ENDCHAR
++STARTCHAR char2
++ENCODING 18
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0F80
++0F80
++0F80
++0F80
++0F80
++0000
++0000
++0000
++0000
++0000
++0000
++F000
++F000
++F000
++0000
++0000
++ENDCHAR
++STARTCHAR char1
++ENCODING 19
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++FF80
++FF80
++FF80
++FF80
++FF80
++0000
++0000
++0000
++0000
++0000
++0000
++F000
++F000
++F000
++0000
++0000
++ENDCHAR
++STARTCHAR char0
++ENCODING 20
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++0000
++0000
++ENDCHAR
++STARTCHAR char1
++ENCODING 21
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++0000
++0000
++ENDCHAR
++STARTCHAR char2
++ENCODING 22
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0F80
++0F80
++0F80
++0F80
++0F80
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++0000
++0000
++ENDCHAR
++STARTCHAR char1
++ENCODING 23
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++FF80
++FF80
++FF80
++FF80
++FF80
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++0000
++0000
++ENDCHAR
++STARTCHAR char0
++ENCODING 24
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++F000
++F000
++F000
++0000
++0000
++ENDCHAR
++STARTCHAR char1
++ENCODING 25
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++F000
++F000
++F000
++F000
++F000
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++F000
++F000
++F000
++0000
++0000
++ENDCHAR
++STARTCHAR char2
++ENCODING 26
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++F000
++F000
++F000
++0000
++0000
++ENDCHAR
++STARTCHAR char1
++ENCODING 27
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++FF80
++FF80
++FF80
++FF80
++FF80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++F000
++F000
++F000
++0000
++0000
++ENDCHAR
++STARTCHAR char0
++ENCODING 28
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++F000
++F000
++F000
++0000
++0000
++ENDCHAR
++STARTCHAR char1
++ENCODING 29
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++F000
++F000
++F000
++F000
++F000
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++F000
++F000
++F000
++0000
++0000
++ENDCHAR
++STARTCHAR char2
++ENCODING 30
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0F80
++0F80
++0F80
++0F80
++0F80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++F000
++F000
++F000
++0000
++0000
++ENDCHAR
++STARTCHAR char1
++ENCODING 31
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++F000
++F000
++F000
++0000
++0000
++ENDCHAR
++STARTCHAR char32
++ENCODING 32
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char33
++ENCODING 33
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++1800
++3C00
++3C00
++3C00
++1800
++1800
++1800
++0000
++1800
++1800
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char34
++ENCODING 34
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++6600
++6600
++6600
++2400
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char35
++ENCODING 35
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++3600
++3600
++7F00
++3600
++3600
++3600
++7F00
++3600
++3600
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char36
++ENCODING 36
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0C00
++0C00
++3E00
++6300
++6100
++6000
++3E00
++0300
++0300
++4300
++6300
++3E00
++0C00
++0C00
++0000
++0000
++ENDCHAR
++STARTCHAR char37
++ENCODING 37
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++6100
++6300
++0600
++0C00
++1800
++3000
++6300
++4300
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char38
++ENCODING 38
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++1C00
++3600
++3600
++1C00
++3B00
++6E00
++6600
++6600
++6600
++3B00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char39
++ENCODING 39
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++3000
++3000
++3000
++6000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char40
++ENCODING 40
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0C00
++1800
++3000
++3000
++3000
++3000
++3000
++3000
++1800
++0C00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char41
++ENCODING 41
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++3000
++1800
++0C00
++0C00
++0C00
++0C00
++0C00
++0C00
++1800
++3000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char42
++ENCODING 42
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++6600
++3C00
++FF00
++3C00
++6600
++0000
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char43
++ENCODING 43
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++1800
++1800
++7E00
++1800
++1800
++0000
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char44
++ENCODING 44
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++1800
++1800
++1800
++3000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char45
++ENCODING 45
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++7F00
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char46
++ENCODING 46
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++1800
++1800
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char47
++ENCODING 47
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0100
++0300
++0600
++0C00
++1800
++3000
++6000
++4000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char48
++ENCODING 48
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++3C00
++6600
++C300
++C300
++DB00
++DB00
++C300
++C300
++6600
++3C00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char49
++ENCODING 49
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++1800
++3800
++7800
++1800
++1800
++1800
++1800
++1800
++1800
++7E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char50
++ENCODING 50
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++3E00
++6300
++0300
++0600
++0C00
++1800
++3000
++6000
++6300
++7F00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char51
++ENCODING 51
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++3E00
++6300
++0300
++0300
++1E00
++0300
++0300
++0300
++6300
++3E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char52
++ENCODING 52
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0600
++0E00
++1E00
++3600
++6600
++7F00
++0600
++0600
++0600
++0F00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char53
++ENCODING 53
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++7F00
++6000
++6000
++6000
++7E00
++0300
++0300
++0300
++6300
++3E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char54
++ENCODING 54
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++1C00
++3000
++6000
++6000
++7E00
++6300
++6300
++6300
++6300
++3E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char55
++ENCODING 55
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++7F00
++6300
++0300
++0300
++0600
++0C00
++1800
++1800
++1800
++1800
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char56
++ENCODING 56
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++3E00
++6300
++6300
++6300
++3E00
++6300
++6300
++6300
++6300
++3E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char57
++ENCODING 57
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++3E00
++6300
++6300
++6300
++3F00
++0300
++0300
++0300
++0600
++3C00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char58
++ENCODING 58
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++1800
++1800
++0000
++0000
++0000
++1800
++1800
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char59
++ENCODING 59
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++1800
++1800
++0000
++0000
++0000
++1800
++1800
++1800
++3000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char60
++ENCODING 60
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0600
++0C00
++1800
++3000
++6000
++3000
++1800
++0C00
++0600
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char61
++ENCODING 61
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++7E00
++0000
++0000
++7E00
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char62
++ENCODING 62
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++6000
++3000
++1800
++0C00
++0600
++0C00
++1800
++3000
++6000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char63
++ENCODING 63
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++3E00
++6300
++6300
++0600
++0C00
++0C00
++0C00
++0000
++0C00
++0C00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char64
++ENCODING 64
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++3E00
++6300
++6300
++6F00
++6F00
++6F00
++6E00
++6000
++3E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char65
++ENCODING 65
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0800
++1C00
++3600
++6300
++6300
++7F00
++6300
++6300
++6300
++6300
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char66
++ENCODING 66
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++7E00
++3300
++3300
++3300
++3E00
++3300
++3300
++3300
++3300
++7E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char67
++ENCODING 67
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++1E00
++3300
++6100
++6000
++6000
++6000
++6000
++6100
++3300
++1E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char68
++ENCODING 68
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++7C00
++3600
++3300
++3300
++3300
++3300
++3300
++3300
++3600
++7C00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char69
++ENCODING 69
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++7F00
++3300
++3100
++3400
++3C00
++3400
++3000
++3100
++3300
++7F00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char70
++ENCODING 70
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++7F00
++3300
++3100
++3400
++3C00
++3400
++3000
++3000
++3000
++7800
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char71
++ENCODING 71
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++1E00
++3300
++6100
++6000
++6000
++6F00
++6300
++6300
++3300
++1D00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char72
++ENCODING 72
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++6300
++6300
++6300
++6300
++7F00
++6300
++6300
++6300
++6300
++6300
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char73
++ENCODING 73
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++3C00
++1800
++1800
++1800
++1800
++1800
++1800
++1800
++1800
++3C00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char74
++ENCODING 74
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0F00
++0600
++0600
++0600
++0600
++0600
++6600
++6600
++6600
++3C00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char75
++ENCODING 75
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++7300
++3300
++3300
++3600
++3C00
++3C00
++3600
++3300
++3300
++7300
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char76
++ENCODING 76
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++7800
++3000
++3000
++3000
++3000
++3000
++3000
++3100
++3300
++7F00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char77
++ENCODING 77
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++C300
++E700
++FF00
++FF00
++DB00
++C300
++C300
++C300
++C300
++C300
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char78
++ENCODING 78
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++6300
++7300
++7B00
++7F00
++6F00
++6700
++6300
++6300
++6300
++6300
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char79
++ENCODING 79
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++3E00
++6300
++6300
++6300
++6300
++6300
++6300
++6300
++6300
++3E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char80
++ENCODING 80
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++7E00
++3300
++3300
++3300
++3E00
++3000
++3000
++3000
++3000
++7800
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char81
++ENCODING 81
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++3E00
++6300
++6300
++6300
++6300
++6300
++6300
++6B00
++6F00
++3E00
++0600
++0700
++0000
++0000
++ENDCHAR
++STARTCHAR char82
++ENCODING 82
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++7E00
++3300
++3300
++3300
++3E00
++3600
++3300
++3300
++3300
++7300
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char83
++ENCODING 83
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++3E00
++6300
++6300
++3000
++1C00
++0600
++0300
++6300
++6300
++3E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char84
++ENCODING 84
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++FF00
++DB00
++9900
++1800
++1800
++1800
++1800
++1800
++1800
++3C00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char85
++ENCODING 85
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++6300
++6300
++6300
++6300
++6300
++6300
++6300
++6300
++6300
++3E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char86
++ENCODING 86
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++C300
++C300
++C300
++C300
++C300
++C300
++C300
++6600
++3C00
++1800
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char87
++ENCODING 87
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++C300
++C300
++C300
++C300
++C300
++DB00
++DB00
++FF00
++6600
++6600
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char88
++ENCODING 88
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++C300
++C300
++6600
++3C00
++1800
++1800
++3C00
++6600
++C300
++C300
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char89
++ENCODING 89
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++C300
++C300
++C300
++6600
++3C00
++1800
++1800
++1800
++1800
++3C00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char90
++ENCODING 90
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++FF00
++C300
++8600
++0C00
++1800
++3000
++6000
++C100
++C300
++FF00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char91
++ENCODING 91
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++3C00
++3000
++3000
++3000
++3000
++3000
++3000
++3000
++3000
++3C00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char92
++ENCODING 92
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++4000
++6000
++7000
++3800
++1C00
++0E00
++0700
++0300
++0100
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char93
++ENCODING 93
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++3C00
++0C00
++0C00
++0C00
++0C00
++0C00
++0C00
++0C00
++0C00
++3C00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char94
++ENCODING 94
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0800
++1C00
++3600
++6300
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char95
++ENCODING 95
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++FF80
++0000
++0000
++ENDCHAR
++STARTCHAR char96
++ENCODING 96
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++3000
++3000
++1800
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char97
++ENCODING 97
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++3C00
++0600
++3E00
++6600
++6600
++6600
++3B00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char98
++ENCODING 98
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++7000
++3000
++3000
++3C00
++3600
++3300
++3300
++3300
++3300
++3E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char99
++ENCODING 99
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++3E00
++6300
++6000
++6000
++6000
++6300
++3E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char100
++ENCODING 100
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0E00
++0600
++0600
++1E00
++3600
++6600
++6600
++6600
++6600
++3B00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char101
++ENCODING 101
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++3E00
++6300
++7F00
++6000
++6000
++6300
++3E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char102
++ENCODING 102
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++1C00
++3600
++3200
++3000
++7800
++3000
++3000
++3000
++3000
++7800
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char103
++ENCODING 103
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++3B00
++6600
++6600
++6600
++6600
++6600
++3E00
++0600
++6600
++3C00
++0000
++ENDCHAR
++STARTCHAR char104
++ENCODING 104
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++7000
++3000
++3000
++3600
++3B00
++3300
++3300
++3300
++3300
++7300
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char105
++ENCODING 105
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++1800
++1800
++0000
++3800
++1800
++1800
++1800
++1800
++1800
++3C00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char106
++ENCODING 106
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0600
++0600
++0000
++0E00
++0600
++0600
++0600
++0600
++0600
++0600
++6600
++6600
++3C00
++0000
++ENDCHAR
++STARTCHAR char107
++ENCODING 107
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++7000
++3000
++3000
++3300
++3600
++3C00
++3C00
++3600
++3300
++7300
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char108
++ENCODING 108
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++3800
++1800
++1800
++1800
++1800
++1800
++1800
++1800
++1800
++3C00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char109
++ENCODING 109
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++E600
++FF00
++DB00
++DB00
++DB00
++DB00
++DB00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char110
++ENCODING 110
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++6E00
++3300
++3300
++3300
++3300
++3300
++3300
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char111
++ENCODING 111
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++3E00
++6300
++6300
++6300
++6300
++6300
++3E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char112
++ENCODING 112
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++6E00
++3300
++3300
++3300
++3300
++3300
++3E00
++3000
++3000
++3000
++0000
++ENDCHAR
++STARTCHAR char113
++ENCODING 113
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++3B00
++6600
++6600
++6600
++6600
++6600
++3E00
++0600
++0600
++0600
++0000
++ENDCHAR
++STARTCHAR char114
++ENCODING 114
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++6E00
++3B00
++3300
++3000
++3000
++3000
++7800
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char115
++ENCODING 115
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++3E00
++6300
++3000
++1C00
++0600
++6300
++3E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char116
++ENCODING 116
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0800
++1800
++1800
++7E00
++1800
++1800
++1800
++1800
++1B00
++0E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char117
++ENCODING 117
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++6600
++6600
++6600
++6600
++6600
++6600
++3B00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char118
++ENCODING 118
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++C300
++C300
++C300
++C300
++6600
++3C00
++1800
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char119
++ENCODING 119
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++C300
++C300
++C300
++DB00
++DB00
++FF00
++6600
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char120
++ENCODING 120
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++C300
++6600
++3C00
++1800
++3C00
++6600
++C300
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char121
++ENCODING 121
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++6300
++6300
++6300
++6300
++6300
++6300
++3F00
++0300
++0600
++0C00
++0000
++ENDCHAR
++STARTCHAR char122
++ENCODING 122
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++7F00
++6600
++0C00
++1800
++3000
++6300
++7F00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char123
++ENCODING 123
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0E00
++1800
++1800
++1800
++7000
++1800
++1800
++1800
++1800
++0E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char124
++ENCODING 124
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++1800
++1800
++1800
++1800
++1800
++1800
++1800
++1800
++1800
++1800
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char125
++ENCODING 125
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++7000
++1800
++1800
++1800
++0E00
++1800
++1800
++1800
++1800
++7000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char126
++ENCODING 126
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++3B00
++6E00
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char127
++ENCODING 127
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++7F00
++7F00
++7F00
++7F00
++7F00
++7F00
++7F00
++7F00
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char0
++ENCODING 128
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0F80
++0F80
++0F80
++0000
++0000
++ENDCHAR
++STARTCHAR char1
++ENCODING 129
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++F000
++F000
++F000
++F000
++F000
++0000
++0000
++0000
++0000
++0000
++0000
++0F80
++0F80
++0F80
++0000
++0000
++ENDCHAR
++STARTCHAR char2
++ENCODING 130
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0F80
++0F80
++0F80
++0F80
++0F80
++0000
++0000
++0000
++0000
++0000
++0000
++0F80
++0F80
++0F80
++0000
++0000
++ENDCHAR
++STARTCHAR char1
++ENCODING 131
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++FF80
++FF80
++FF80
++FF80
++FF80
++0000
++0000
++0000
++0000
++0000
++0000
++0F80
++0F80
++0F80
++0000
++0000
++ENDCHAR
++STARTCHAR char0
++ENCODING 132
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++F000
++F000
++F000
++F000
++F000
++F000
++0F80
++0F80
++0F80
++0000
++0000
++ENDCHAR
++STARTCHAR char1
++ENCODING 133
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++0F80
++0F80
++0F80
++0000
++0000
++ENDCHAR
++STARTCHAR char2
++ENCODING 134
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0F80
++0F80
++0F80
++0F80
++0F80
++F000
++F000
++F000
++F000
++F000
++F000
++0F80
++0F80
++0F80
++0000
++0000
++ENDCHAR
++STARTCHAR char1
++ENCODING 135
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++FF80
++FF80
++FF80
++FF80
++FF80
++F000
++F000
++F000
++F000
++F000
++F000
++0F80
++0F80
++0F80
++0000
++0000
++ENDCHAR
++STARTCHAR char0
++ENCODING 136
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0000
++0000
++ENDCHAR
++STARTCHAR char1
++ENCODING 137
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++F000
++F000
++F000
++F000
++F000
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0000
++0000
++ENDCHAR
++STARTCHAR char2
++ENCODING 138
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0000
++0000
++ENDCHAR
++STARTCHAR char1
++ENCODING 139
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++FF80
++FF80
++FF80
++FF80
++FF80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0000
++0000
++ENDCHAR
++STARTCHAR char0
++ENCODING 140
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++0F80
++0F80
++0F80
++0000
++0000
++ENDCHAR
++STARTCHAR char1
++ENCODING 141
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++F000
++F000
++F000
++F000
++F000
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++0F80
++0F80
++0F80
++0000
++0000
++ENDCHAR
++STARTCHAR char2
++ENCODING 142
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0F80
++0F80
++0F80
++0F80
++0F80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++0F80
++0F80
++0F80
++0000
++0000
++ENDCHAR
++STARTCHAR char1
++ENCODING 143
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++0F80
++0F80
++0F80
++0000
++0000
++ENDCHAR
++STARTCHAR char0
++ENCODING 144
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++FF80
++FF80
++FF80
++0000
++0000
++ENDCHAR
++STARTCHAR char1
++ENCODING 145
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++F000
++F000
++F000
++F000
++F000
++0000
++0000
++0000
++0000
++0000
++0000
++FF80
++FF80
++FF80
++0000
++0000
++ENDCHAR
++STARTCHAR char2
++ENCODING 146
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0F80
++0F80
++0F80
++0F80
++0F80
++0000
++0000
++0000
++0000
++0000
++0000
++FF80
++FF80
++FF80
++0000
++0000
++ENDCHAR
++STARTCHAR char1
++ENCODING 147
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++FF80
++FF80
++FF80
++FF80
++FF80
++0000
++0000
++0000
++0000
++0000
++0000
++FF80
++FF80
++FF80
++0000
++0000
++ENDCHAR
++STARTCHAR char0
++ENCODING 148
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++F000
++F000
++F000
++F000
++F000
++F000
++FF80
++FF80
++FF80
++0000
++0000
++ENDCHAR
++STARTCHAR char1
++ENCODING 149
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++FF80
++FF80
++FF80
++0000
++0000
++ENDCHAR
++STARTCHAR char2
++ENCODING 150
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0F80
++0F80
++0F80
++0F80
++0F80
++F000
++F000
++F000
++F000
++F000
++F000
++FF80
++FF80
++FF80
++0000
++0000
++ENDCHAR
++STARTCHAR char1
++ENCODING 151
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++FF80
++FF80
++FF80
++FF80
++FF80
++F000
++F000
++F000
++F000
++F000
++F000
++FF80
++FF80
++FF80
++0000
++0000
++ENDCHAR
++STARTCHAR char0
++ENCODING 152
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++FF80
++FF80
++FF80
++0000
++0000
++ENDCHAR
++STARTCHAR char1
++ENCODING 153
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++F000
++F000
++F000
++F000
++F000
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++FF80
++FF80
++FF80
++0000
++0000
++ENDCHAR
++STARTCHAR char2
++ENCODING 154
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++FF80
++FF80
++FF80
++0000
++0000
++ENDCHAR
++STARTCHAR char1
++ENCODING 155
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++FF80
++FF80
++FF80
++FF80
++FF80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++FF80
++FF80
++FF80
++0000
++0000
++ENDCHAR
++STARTCHAR char0
++ENCODING 156
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++0000
++0000
++ENDCHAR
++STARTCHAR char1
++ENCODING 157
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++F000
++F000
++F000
++F000
++F000
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++0000
++0000
++ENDCHAR
++STARTCHAR char2
++ENCODING 158
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0F80
++0F80
++0F80
++0F80
++0F80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++0000
++0000
++ENDCHAR
++STARTCHAR char1
++ENCODING 159
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++0000
++0000
++ENDCHAR
++STARTCHAR U+00A0 NO-BREAK SPACE
++ENCODING 160
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR U+02BD MODIFIER LETTER REVERSED COMMA
++ENCODING 161
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++1800
++1000
++1000
++0800
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR U+02BC MODIFIER LETTER APOSTROPHE
++ENCODING 162
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++1800
++0800
++0800
++1000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR U+00A3 POUND SIGN
++ENCODING 163
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0E00
++1000
++1000
++1000
++7C00
++1000
++1000
++1000
++3E00
++6100
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR U+00A6 BROKEN BAR
++ENCODING 166
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0800
++0800
++0800
++0800
++0000
++0000
++0800
++0800
++0800
++0800
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR U+00A7 SECTION SIGN
++ENCODING 167
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++3C00
++4200
++4000
++3C00
++4200
++4200
++3C00
++0200
++4200
++3C00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR U+00A8 DIAERESIS
++ENCODING 168
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++2400
++2400
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR U+00A9 COPYRIGHT SIGN
++ENCODING 169
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++3C00
++4200
++9900
++A500
++A100
++A100
++A500
++9900
++4200
++3C00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR U+00AB LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
++ENCODING 171
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++1200
++1200
++2400
++2400
++4800
++2400
++2400
++1200
++1200
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR U+00AC NOT SIGN
++ENCODING 172
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++7E00
++0200
++0200
++0200
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR U+00AD SOFT HYPHEN
++ENCODING 173
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++7E00
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR U+2015 HORIZONTAL BAR
++ENCODING 175
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++FF00
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR U+00B0 DEGREE SIGN
++ENCODING 176
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++1000
++2800
++2800
++1000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR U+00B1 PLUS-MINUS SIGN
++ENCODING 177
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0800
++0800
++0800
++7F00
++0800
++0800
++0800
++0000
++7F00
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR U+00B2 SUPERSCRIPT TWO
++ENCODING 178
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++1C00
++2200
++0200
++1C00
++2000
++2000
++3E00
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR U+00B3 SUPERSCRIPT THREE
++ENCODING 179
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++1C00
++2200
++0200
++1C00
++0200
++2200
++1C00
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR U+0384 GREEK TONOS
++ENCODING 180
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++1000
++1000
++1000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR U+0385 GREEK DIALYTIKA TONOS
++ENCODING 181
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++1000
++1000
++1000
++4400
++4400
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR U+0386 GREEK CAPITAL LETTER ALPHA WITH TONOS
++ENCODING 182
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++4000
++4000
++0000
++1800
++2400
++2400
++4200
++4200
++7E00
++4200
++4200
++4200
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR U+00B7 MIDDLE DOT
++ENCODING 183
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++0000
++1800
++1800
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR U+0388 GREEK CAPITAL LETTER EPSILON WITH TONOS
++ENCODING 184
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++4000
++4000
++0000
++7E00
++4000
++4000
++4000
++7C00
++4000
++4000
++4000
++7E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR U+0389 GREEK CAPITAL LETTER ETA WITH TONOS
++ENCODING 185
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++4000
++4000
++0000
++4200
++4200
++4200
++4200
++7E00
++4200
++4200
++4200
++4200
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR U+038A GREEK CAPITAL LETTER IOTA WITH TONOS
++ENCODING 186
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++4000
++4000
++0000
++3E00
++0800
++0800
++0800
++0800
++0800
++0800
++0800
++3E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR U+00BB RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
++ENCODING 187
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++4800
++4800
++2400
++2400
++1200
++2400
++2400
++4800
++4800
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR U+038C GREEK CAPITAL LETTER OMICRON WITH TONOS
++ENCODING 188
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++4000
++4000
++0000
++3C00
++4200
++4200
++4200
++4200
++4200
++4200
++4200
++3C00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR U+00BD VULGAR FRACTION ONE HALF
++ENCODING 189
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++2200
++6200
++2400
++2800
++2800
++1400
++1A00
++2200
++4400
++4E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR U+038E GREEK CAPITAL LETTER UPSILON WITH TONOS
++ENCODING 190
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++4000
++4000
++0000
++4100
++4100
++2200
++2200
++1400
++0800
++0800
++0800
++0800
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR U+038F GREEK CAPITAL LETTER OMEGA WITH TONOS
++ENCODING 191
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++4000
++4000
++0000
++3E00
++4100
++4100
++4100
++4100
++2200
++1400
++1400
++7700
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR U+0390 GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS
++ENCODING 192
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++1000
++5400
++4400
++0000
++1000
++1000
++1000
++1000
++1000
++1000
++0C00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR U+0391 GREEK CAPITAL LETTER ALPHA
++ENCODING 193
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++1800
++2400
++2400
++4200
++4200
++7E00
++4200
++4200
++4200
++4200
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR U+0392 GREEK CAPITAL LETTER BETA
++ENCODING 194
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++7C00
++4200
++4200
++4200
++7C00
++4200
++4200
++4200
++4200
++7C00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR U+0393 GREEK CAPITAL LETTER GAMMA
++ENCODING 195
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++7E00
++4000
++4000
++4000
++4000
++4000
++4000
++4000
++4000
++4000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR U+0394 GREEK CAPITAL LETTER DELTA
++ENCODING 196
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0800
++0800
++1400
++1400
++2200
++2200
++2200
++4100
++4100
++7F00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR U+0395 GREEK CAPITAL LETTER EPSILON
++ENCODING 197
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++7E00
++4000
++4000
++4000
++7C00
++4000
++4000
++4000
++4000
++7E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR U+0396 GREEK CAPITAL LETTER ZETA
++ENCODING 198
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++7E00
++0200
++0200
++0400
++0800
++1000
++2000
++4000
++4000
++7E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR U+0397 GREEK CAPITAL LETTER ETA
++ENCODING 199
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++4200
++4200
++4200
++4200
++7E00
++4200
++4200
++4200
++4200
++4200
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR U+0398 GREEK CAPITAL LETTER THETA
++ENCODING 200
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++3C00
++4200
++4200
++4200
++7E00
++4200
++4200
++4200
++4200
++3C00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR U+0399 GREEK CAPITAL LETTER IOTA
++ENCODING 201
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++3E00
++0800
++0800
++0800
++0800
++0800
++0800
++0800
++0800
++3E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR U+039A GREEK CAPITAL LETTER KAPPA
++ENCODING 202
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++4200
++4400
++4800
++5000
++6000
++6000
++5000
++4800
++4400
++4200
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR U+039B GREEK CAPITAL LETTER LAMDA
++ENCODING 203
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0800
++0800
++1400
++1400
++2200
++2200
++2200
++4100
++4100
++4100
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR U+039C GREEK CAPITAL LETTER MU
++ENCODING 204
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++4200
++4200
++6600
++6600
++5A00
++5A00
++4200
++4200
++4200
++4200
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR U+039D GREEK CAPITAL LETTER NU
++ENCODING 205
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++4200
++6200
++6200
++5200
++5200
++4A00
++4A00
++4600
++4600
++4200
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR U+039E GREEK CAPITAL LETTER XI
++ENCODING 206
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++7E00
++0000
++0000
++0000
++3C00
++0000
++0000
++0000
++0000
++7E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR U+039F GREEK CAPITAL LETTER OMICRON
++ENCODING 207
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++3C00
++4200
++4200
++4200
++4200
++4200
++4200
++4200
++4200
++3C00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR U+03A0 GREEK CAPITAL LETTER PI
++ENCODING 208
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++7F00
++2200
++2200
++2200
++2200
++2200
++2200
++2200
++2200
++2200
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR U+03A1 GREEK CAPITAL LETTER RHO
++ENCODING 209
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++7C00
++4200
++4200
++4200
++7C00
++4000
++4000
++4000
++4000
++4000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR U+03A3 GREEK CAPITAL LETTER SIGMA
++ENCODING 211
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++7E00
++4000
++2000
++1000
++0800
++0800
++1000
++2000
++4000
++7E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR U+03A4 GREEK CAPITAL LETTER TAU
++ENCODING 212
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++7F00
++0800
++0800
++0800
++0800
++0800
++0800
++0800
++0800
++0800
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR U+03A5 GREEK CAPITAL LETTER UPSILON
++ENCODING 213
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++4100
++4100
++2200
++2200
++1400
++0800
++0800
++0800
++0800
++0800
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR U+03A6 GREEK CAPITAL LETTER PHI
++ENCODING 214
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++1C00
++0800
++3E00
++4900
++4900
++4900
++4900
++3E00
++0800
++1C00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR U+03A7 GREEK CAPITAL LETTER CHI
++ENCODING 215
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++4200
++4200
++2400
++2400
++1800
++1800
++2400
++2400
++4200
++4200
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR U+03A8 GREEK CAPITAL LETTER PSI
++ENCODING 216
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++4900
++4900
++4900
++4900
++4900
++3E00
++0800
++0800
++0800
++0800
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR U+03A9 GREEK CAPITAL LETTER OMEGA
++ENCODING 217
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++3E00
++4100
++4100
++4100
++4100
++4100
++2200
++1400
++1400
++7700
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR U+03AA GREEK CAPITAL LETTER IOTA WITH DIALYTIKA
++ENCODING 218
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++2400
++2400
++0000
++3E00
++0800
++0800
++0800
++0800
++0800
++0800
++0800
++3E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR U+03AB GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA
++ENCODING 219
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++2400
++2400
++0000
++4100
++4100
++2200
++2200
++1400
++0800
++0800
++0800
++0800
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR U+03AC GREEK SMALL LETTER ALPHA WITH TONOS
++ENCODING 220
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++1000
++1000
++0000
++0000
++3200
++4A00
++4400
++4400
++4400
++4400
++4A00
++3200
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR U+03AD GREEK SMALL LETTER EPSILON WITH TONOS
++ENCODING 221
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++1000
++1000
++0000
++0000
++3E00
++4000
++4000
++3C00
++4000
++4000
++4000
++3E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR U+03AE GREEK SMALL LETTER ETA WITH TONOS
++ENCODING 222
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++1000
++1000
++0000
++0000
++5C00
++6200
++4200
++4200
++4200
++4200
++4200
++4200
++0200
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR U+03AF GREEK SMALL LETTER IOTA WITH TONOS
++ENCODING 223
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++1000
++1000
++0000
++0000
++1000
++1000
++1000
++1000
++1000
++1000
++1000
++0C00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR U+03B0 GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS
++ENCODING 224
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++1000
++1000
++4400
++4400
++0000
++4200
++4200
++4200
++4200
++4200
++4200
++3C00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR U+03B1 GREEK SMALL LETTER ALPHA
++ENCODING 225
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++3200
++4A00
++4400
++4400
++4400
++4400
++4A00
++3200
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR U+03B2 GREEK SMALL LETTER BETA
++ENCODING 226
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++3800
++4400
++4400
++4400
++7C00
++4200
++4200
++4200
++6200
++5C00
++4000
++4000
++0000
++0000
++ENDCHAR
++STARTCHAR U+03B3 GREEK SMALL LETTER GAMMA
++ENCODING 227
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++3100
++4900
++0A00
++0400
++0800
++0800
++1000
++1000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR U+03B4 GREEK SMALL LETTER DELTA
++ENCODING 228
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++1C00
++2000
++2000
++2000
++1800
++2400
++4200
++4200
++4200
++3C00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR U+03B5 GREEK SMALL LETTER EPSILON
++ENCODING 229
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++3C00
++4200
++4000
++3C00
++4000
++4000
++4200
++3C00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR U+03B6 GREEK SMALL LETTER ZETA
++ENCODING 230
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++2000
++2000
++1C00
++0800
++1000
++2000
++2000
++2000
++2000
++1C00
++0200
++1C00
++0000
++0000
++ENDCHAR
++STARTCHAR U+03B7 GREEK SMALL LETTER ETA
++ENCODING 231
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++5C00
++6200
++4200
++4200
++4200
++4200
++4200
++4200
++0200
++0200
++0000
++0000
++ENDCHAR
++STARTCHAR U+03B8 GREEK SMALL LETTER THETA
++ENCODING 232
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++1800
++2400
++2400
++4200
++7E00
++4200
++4200
++2400
++2400
++1800
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR U+03B9 GREEK SMALL LETTER IOTA
++ENCODING 233
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++1000
++1000
++1000
++1000
++1000
++1000
++1000
++0C00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR U+03BA GREEK SMALL LETTER KAPPA
++ENCODING 234
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++2200
++2400
++2800
++3000
++3000
++2800
++2400
++2200
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR U+03BB GREEK SMALL LETTER LAMDA
++ENCODING 235
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++2000
++2000
++1000
++1000
++0800
++1800
++2400
++2400
++4200
++4200
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR U+03BC GREEK SMALL LETTER MU
++ENCODING 236
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++4200
++4200
++4200
++4200
++6600
++6600
++5A00
++4200
++4000
++4000
++0000
++0000
++ENDCHAR
++STARTCHAR U+03BD GREEK SMALL LETTER NU
++ENCODING 237
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++4200
++4200
++4200
++4400
++4400
++4800
++5000
++6000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR U+03BE GREEK SMALL LETTER XI
++ENCODING 238
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++4000
++4000
++3C00
++4000
++4000
++3C00
++4000
++4000
++3C00
++0200
++0200
++3C00
++0000
++0000
++ENDCHAR
++STARTCHAR U+03BF GREEK SMALL LETTER OMICRON
++ENCODING 239
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++3C00
++4200
++4200
++4200
++4200
++4200
++4200
++3C00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR U+03C0 GREEK SMALL LETTER PI
++ENCODING 240
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++7E00
++2400
++2400
++2400
++2400
++2400
++2400
++2400
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR U+03C1 GREEK SMALL LETTER RHO
++ENCODING 241
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++3C00
++4200
++4200
++4200
++4200
++4200
++6200
++5C00
++4000
++4000
++0000
++0000
++ENDCHAR
++STARTCHAR U+03C2 GREEK SMALL LETTER FINAL SIGMA
++ENCODING 242
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++1E00
++2000
++4000
++4000
++4000
++2000
++1C00
++0200
++0200
++1C00
++0000
++0000
++ENDCHAR
++STARTCHAR U+03C3 GREEK SMALL LETTER SIGMA
++ENCODING 243
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++3F00
++4800
++4400
++4400
++4400
++4400
++4400
++3800
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR U+03C4 GREEK SMALL LETTER TAU
++ENCODING 244
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++7E00
++1000
++1000
++1000
++1000
++1000
++1000
++0C00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR U+03C5 GREEK SMALL LETTER UPSILON
++ENCODING 245
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++4200
++4200
++4200
++4200
++4200
++4200
++4200
++3C00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR U+03C6 GREEK SMALL LETTER PHI
++ENCODING 246
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++3E00
++4900
++4900
++4900
++4900
++4900
++4900
++3E00
++0800
++0800
++0000
++0000
++ENDCHAR
++STARTCHAR U+03C7 GREEK SMALL LETTER CHI
++ENCODING 247
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++4200
++4200
++2400
++2400
++1800
++1800
++2400
++2400
++4200
++4200
++0000
++0000
++ENDCHAR
++STARTCHAR U+03C8 GREEK SMALL LETTER PSI
++ENCODING 248
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++0000
++4900
++4900
++4900
++4900
++4900
++3E00
++0800
++0800
++0000
++0000
++ENDCHAR
++STARTCHAR U+03C9 GREEK SMALL LETTER OMEGA
++ENCODING 249
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++2200
++4100
++4100
++4900
++4900
++4900
++4900
++3600
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR U+03CA GREEK SMALL LETTER IOTA WITH DIALYTIKA
++ENCODING 250
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++2400
++2400
++0000
++0000
++1000
++1000
++1000
++1000
++1000
++1000
++1000
++0C00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR U+03CB GREEK SMALL LETTER UPSILON WITH DIALYTIKA
++ENCODING 251
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++2400
++2400
++0000
++0000
++4200
++4200
++4200
++4200
++4200
++4200
++4200
++3C00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR U+03CC GREEK SMALL LETTER OMICRON WITH TONOS
++ENCODING 252
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++1000
++1000
++0000
++0000
++3C00
++4200
++4200
++4200
++4200
++4200
++4200
++3C00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR U+03CD GREEK SMALL LETTER UPSILON WITH TONOS
++ENCODING 253
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++1000
++1000
++0000
++0000
++4200
++4200
++4200
++4200
++4200
++4200
++4200
++3C00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR U+03CE GREEK SMALL LETTER OMEGA WITH TONOS
++ENCODING 254
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0800
++0800
++0000
++0000
++2200
++4100
++4100
++4900
++4900
++4900
++4900
++3600
++0000
++0000
++0000
++0000
++ENDCHAR
++ENDFONT
+diff -r af23d23c278b util/alevt/vtxt-koi8.bdf
+--- /dev/null Thu Jan 01 00:00:00 1970 +0000
++++ b/util/alevt/vtxt-koi8.bdf Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,5906 @@
++STARTFONT 2.1
++FONT -alevt-teletext-medium-r-normal--16-1-75-75-c-90-fontspecific-1
++SIZE 1 75 75
++FONTBOUNDINGBOX 9 16 0 -4
++STARTPROPERTIES 10
++POINT_SIZE 1
++PIXEL_SIZE 16
++RESOLUTION_X 75
++RESOLUTION_Y 75
++FONT_ASCENT 12
++FONT_DESCENT 4
++AVERAGE_WIDTH 90
++SPACING "C"
++_XMBDFED_INFO "Edited with xmbdfed 3.0."
++FONT "vtxt"
++ENDPROPERTIES
++CHARS 256
++STARTCHAR char0
++ENCODING 0
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char1
++ENCODING 1
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++F000
++F000
++F000
++F000
++F000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char2
++ENCODING 2
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0F80
++0F80
++0F80
++0F80
++0F80
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char1
++ENCODING 3
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++FF80
++FF80
++FF80
++FF80
++FF80
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char0
++ENCODING 4
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++F000
++F000
++F000
++F000
++F000
++F000
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char1
++ENCODING 5
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char2
++ENCODING 6
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0F80
++0F80
++0F80
++0F80
++0F80
++F000
++F000
++F000
++F000
++F000
++F000
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char1
++ENCODING 7
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++FF80
++FF80
++FF80
++FF80
++FF80
++F000
++F000
++F000
++F000
++F000
++F000
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char0
++ENCODING 8
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char1
++ENCODING 9
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++F000
++F000
++F000
++F000
++F000
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char2
++ENCODING 10
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char1
++ENCODING 11
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++FF80
++FF80
++FF80
++FF80
++FF80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char0
++ENCODING 12
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char1
++ENCODING 13
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++F000
++F000
++F000
++F000
++F000
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char2
++ENCODING 14
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0F80
++0F80
++0F80
++0F80
++0F80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char1
++ENCODING 15
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char0
++ENCODING 16
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++F000
++F000
++F000
++F000
++F000
++ENDCHAR
++STARTCHAR char1
++ENCODING 17
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++F000
++F000
++F000
++F000
++F000
++0000
++0000
++0000
++0000
++0000
++0000
++F000
++F000
++F000
++F000
++F000
++ENDCHAR
++STARTCHAR char2
++ENCODING 18
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0F80
++0F80
++0F80
++0F80
++0F80
++0000
++0000
++0000
++0000
++0000
++0000
++F000
++F000
++F000
++F000
++F000
++ENDCHAR
++STARTCHAR char1
++ENCODING 19
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++FF80
++FF80
++FF80
++FF80
++FF80
++0000
++0000
++0000
++0000
++0000
++0000
++F000
++F000
++F000
++F000
++F000
++ENDCHAR
++STARTCHAR char0
++ENCODING 20
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++ENDCHAR
++STARTCHAR char1
++ENCODING 21
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++ENDCHAR
++STARTCHAR char2
++ENCODING 22
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0F80
++0F80
++0F80
++0F80
++0F80
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++ENDCHAR
++STARTCHAR char1
++ENCODING 23
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++FF80
++FF80
++FF80
++FF80
++FF80
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++ENDCHAR
++STARTCHAR char0
++ENCODING 24
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++F000
++F000
++F000
++F000
++F000
++ENDCHAR
++STARTCHAR char1
++ENCODING 25
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++F000
++F000
++F000
++F000
++F000
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++F000
++F000
++F000
++F000
++F000
++ENDCHAR
++STARTCHAR char2
++ENCODING 26
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++F000
++F000
++F000
++F000
++F000
++ENDCHAR
++STARTCHAR char1
++ENCODING 27
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++FF80
++FF80
++FF80
++FF80
++FF80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++F000
++F000
++F000
++F000
++F000
++ENDCHAR
++STARTCHAR char0
++ENCODING 28
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++F000
++F000
++F000
++F000
++F000
++ENDCHAR
++STARTCHAR char1
++ENCODING 29
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++F000
++F000
++F000
++F000
++F000
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++F000
++F000
++F000
++F000
++F000
++ENDCHAR
++STARTCHAR char2
++ENCODING 30
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0F80
++0F80
++0F80
++0F80
++0F80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++F000
++F000
++F000
++F000
++F000
++ENDCHAR
++STARTCHAR char1
++ENCODING 31
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++F000
++F000
++F000
++F000
++F000
++ENDCHAR
++STARTCHAR char32
++ENCODING 32
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char33
++ENCODING 33
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++1800
++3C00
++3C00
++3C00
++1800
++1800
++1800
++0000
++1800
++1800
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char34
++ENCODING 34
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++6600
++6600
++6600
++2400
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char35
++ENCODING 35
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++3600
++3600
++7F00
++3600
++3600
++3600
++7F00
++3600
++3600
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char36
++ENCODING 36
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0C00
++0C00
++3E00
++6300
++6100
++6000
++3E00
++0300
++0300
++4300
++6300
++3E00
++0C00
++0C00
++0000
++0000
++ENDCHAR
++STARTCHAR char37
++ENCODING 37
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++6100
++6300
++0600
++0C00
++1800
++3000
++6300
++4300
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char38
++ENCODING 38
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++1C00
++3600
++3600
++1C00
++3B00
++6E00
++6600
++6600
++6600
++3B00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char39
++ENCODING 39
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++3000
++3000
++3000
++6000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char40
++ENCODING 40
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0C00
++1800
++3000
++3000
++3000
++3000
++3000
++3000
++1800
++0C00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char41
++ENCODING 41
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++3000
++1800
++0C00
++0C00
++0C00
++0C00
++0C00
++0C00
++1800
++3000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char42
++ENCODING 42
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++6600
++3C00
++FF00
++3C00
++6600
++0000
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char43
++ENCODING 43
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++1800
++1800
++7E00
++1800
++1800
++0000
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char44
++ENCODING 44
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++1800
++1800
++1800
++3000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char45
++ENCODING 45
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++7F00
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char46
++ENCODING 46
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++1800
++1800
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char47
++ENCODING 47
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0100
++0300
++0600
++0C00
++1800
++3000
++6000
++4000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char48
++ENCODING 48
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++3C00
++6600
++C300
++C300
++DB00
++DB00
++C300
++C300
++6600
++3C00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char49
++ENCODING 49
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++1800
++3800
++7800
++1800
++1800
++1800
++1800
++1800
++1800
++7E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char50
++ENCODING 50
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++3E00
++6300
++0300
++0600
++0C00
++1800
++3000
++6000
++6300
++7F00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char51
++ENCODING 51
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++3E00
++6300
++0300
++0300
++1E00
++0300
++0300
++0300
++6300
++3E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char52
++ENCODING 52
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0600
++0E00
++1E00
++3600
++6600
++7F00
++0600
++0600
++0600
++0F00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char53
++ENCODING 53
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++7F00
++6000
++6000
++6000
++7E00
++0300
++0300
++0300
++6300
++3E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char54
++ENCODING 54
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++1C00
++3000
++6000
++6000
++7E00
++6300
++6300
++6300
++6300
++3E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char55
++ENCODING 55
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++7F00
++6300
++0300
++0300
++0600
++0C00
++1800
++1800
++1800
++1800
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char56
++ENCODING 56
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++3E00
++6300
++6300
++6300
++3E00
++6300
++6300
++6300
++6300
++3E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char57
++ENCODING 57
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++3E00
++6300
++6300
++6300
++3F00
++0300
++0300
++0300
++0600
++3C00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char58
++ENCODING 58
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++1800
++1800
++0000
++0000
++0000
++1800
++1800
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char59
++ENCODING 59
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++1800
++1800
++0000
++0000
++0000
++1800
++1800
++1800
++3000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char60
++ENCODING 60
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0600
++0C00
++1800
++3000
++6000
++3000
++1800
++0C00
++0600
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char61
++ENCODING 61
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++7E00
++0000
++0000
++7E00
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char62
++ENCODING 62
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++6000
++3000
++1800
++0C00
++0600
++0C00
++1800
++3000
++6000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char63
++ENCODING 63
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++3E00
++6300
++6300
++0600
++0C00
++0C00
++0C00
++0000
++0C00
++0C00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char64
++ENCODING 64
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++3E00
++6300
++6300
++6F00
++6F00
++6F00
++6E00
++6000
++3E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char65
++ENCODING 65
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0800
++1C00
++3600
++6300
++6300
++7F00
++6300
++6300
++6300
++6300
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char66
++ENCODING 66
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++7E00
++3300
++3300
++3300
++3E00
++3300
++3300
++3300
++3300
++7E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char67
++ENCODING 67
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++1E00
++3300
++6100
++6000
++6000
++6000
++6000
++6100
++3300
++1E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char68
++ENCODING 68
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++7C00
++3600
++3300
++3300
++3300
++3300
++3300
++3300
++3600
++7C00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char69
++ENCODING 69
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++7F00
++3300
++3100
++3400
++3C00
++3400
++3000
++3100
++3300
++7F00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char70
++ENCODING 70
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++7F00
++3300
++3100
++3400
++3C00
++3400
++3000
++3000
++3000
++7800
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char71
++ENCODING 71
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++1E00
++3300
++6100
++6000
++6000
++6F00
++6300
++6300
++3300
++1D00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char72
++ENCODING 72
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++6300
++6300
++6300
++6300
++7F00
++6300
++6300
++6300
++6300
++6300
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char73
++ENCODING 73
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++3C00
++1800
++1800
++1800
++1800
++1800
++1800
++1800
++1800
++3C00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char74
++ENCODING 74
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0F00
++0600
++0600
++0600
++0600
++0600
++6600
++6600
++6600
++3C00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char75
++ENCODING 75
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++7300
++3300
++3300
++3600
++3C00
++3C00
++3600
++3300
++3300
++7300
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char76
++ENCODING 76
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++7800
++3000
++3000
++3000
++3000
++3000
++3000
++3100
++3300
++7F00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char77
++ENCODING 77
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++C300
++E700
++FF00
++FF00
++DB00
++C300
++C300
++C300
++C300
++C300
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char78
++ENCODING 78
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++6300
++7300
++7B00
++7F00
++6F00
++6700
++6300
++6300
++6300
++6300
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char79
++ENCODING 79
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++3E00
++6300
++6300
++6300
++6300
++6300
++6300
++6300
++6300
++3E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char80
++ENCODING 80
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++7E00
++3300
++3300
++3300
++3E00
++3000
++3000
++3000
++3000
++7800
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char81
++ENCODING 81
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++3E00
++6300
++6300
++6300
++6300
++6300
++6300
++6B00
++6F00
++3E00
++0600
++0700
++0000
++0000
++ENDCHAR
++STARTCHAR char82
++ENCODING 82
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++7E00
++3300
++3300
++3300
++3E00
++3600
++3300
++3300
++3300
++7300
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char83
++ENCODING 83
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++3E00
++6300
++6300
++3000
++1C00
++0600
++0300
++6300
++6300
++3E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char84
++ENCODING 84
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++FF00
++DB00
++9900
++1800
++1800
++1800
++1800
++1800
++1800
++3C00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char85
++ENCODING 85
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++6300
++6300
++6300
++6300
++6300
++6300
++6300
++6300
++6300
++3E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char86
++ENCODING 86
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++C300
++C300
++C300
++C300
++C300
++C300
++C300
++6600
++3C00
++1800
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char87
++ENCODING 87
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++C300
++C300
++C300
++C300
++C300
++DB00
++DB00
++FF00
++6600
++6600
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char88
++ENCODING 88
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++C300
++C300
++6600
++3C00
++1800
++1800
++3C00
++6600
++C300
++C300
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char89
++ENCODING 89
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++C300
++C300
++C300
++6600
++3C00
++1800
++1800
++1800
++1800
++3C00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char90
++ENCODING 90
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++FF00
++C300
++8600
++0C00
++1800
++3000
++6000
++C100
++C300
++FF00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char91
++ENCODING 91
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++3C00
++3000
++3000
++3000
++3000
++3000
++3000
++3000
++3000
++3C00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char92
++ENCODING 92
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++4000
++6000
++7000
++3800
++1C00
++0E00
++0700
++0300
++0100
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char93
++ENCODING 93
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++3C00
++0C00
++0C00
++0C00
++0C00
++0C00
++0C00
++0C00
++0C00
++3C00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char94
++ENCODING 94
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0800
++1C00
++3600
++6300
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char95
++ENCODING 95
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++FF80
++0000
++0000
++ENDCHAR
++STARTCHAR char96
++ENCODING 96
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++3000
++3000
++1800
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char97
++ENCODING 97
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++3C00
++0600
++3E00
++6600
++6600
++6600
++3B00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char98
++ENCODING 98
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++7000
++3000
++3000
++3C00
++3600
++3300
++3300
++3300
++3300
++3E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char99
++ENCODING 99
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++3E00
++6300
++6000
++6000
++6000
++6300
++3E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char100
++ENCODING 100
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0E00
++0600
++0600
++1E00
++3600
++6600
++6600
++6600
++6600
++3B00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char101
++ENCODING 101
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++3E00
++6300
++7F00
++6000
++6000
++6300
++3E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char102
++ENCODING 102
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++1C00
++3600
++3200
++3000
++7800
++3000
++3000
++3000
++3000
++7800
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char103
++ENCODING 103
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++3B00
++6600
++6600
++6600
++6600
++6600
++3E00
++0600
++6600
++3C00
++0000
++ENDCHAR
++STARTCHAR char104
++ENCODING 104
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++7000
++3000
++3000
++3600
++3B00
++3300
++3300
++3300
++3300
++7300
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char105
++ENCODING 105
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++1800
++1800
++0000
++3800
++1800
++1800
++1800
++1800
++1800
++3C00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char106
++ENCODING 106
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0600
++0600
++0000
++0E00
++0600
++0600
++0600
++0600
++0600
++0600
++6600
++6600
++3C00
++0000
++ENDCHAR
++STARTCHAR char107
++ENCODING 107
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++7000
++3000
++3000
++3300
++3600
++3C00
++3C00
++3600
++3300
++7300
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char108
++ENCODING 108
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++3800
++1800
++1800
++1800
++1800
++1800
++1800
++1800
++1800
++3C00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char109
++ENCODING 109
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++E600
++FF00
++DB00
++DB00
++DB00
++DB00
++DB00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char110
++ENCODING 110
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++6E00
++3300
++3300
++3300
++3300
++3300
++3300
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char111
++ENCODING 111
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++3E00
++6300
++6300
++6300
++6300
++6300
++3E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char112
++ENCODING 112
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++6E00
++3300
++3300
++3300
++3300
++3300
++3E00
++3000
++3000
++7800
++0000
++ENDCHAR
++STARTCHAR char113
++ENCODING 113
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++3B00
++6600
++6600
++6600
++6600
++6600
++3E00
++0600
++0600
++0F00
++0000
++ENDCHAR
++STARTCHAR char114
++ENCODING 114
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++6E00
++3B00
++3300
++3000
++3000
++3000
++7800
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char115
++ENCODING 115
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++3E00
++6300
++3000
++1C00
++0600
++6300
++3E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char116
++ENCODING 116
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0800
++1800
++1800
++7E00
++1800
++1800
++1800
++1800
++1B00
++0E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char117
++ENCODING 117
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++6600
++6600
++6600
++6600
++6600
++6600
++3B00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char118
++ENCODING 118
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++C300
++C300
++C300
++C300
++6600
++3C00
++1800
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char119
++ENCODING 119
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++C300
++C300
++C300
++DB00
++DB00
++FF00
++6600
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char120
++ENCODING 120
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++C300
++6600
++3C00
++1800
++3C00
++6600
++C300
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char121
++ENCODING 121
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++6300
++6300
++6300
++6300
++6300
++6300
++3F00
++0300
++0600
++7C00
++0000
++ENDCHAR
++STARTCHAR char122
++ENCODING 122
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++7F00
++6600
++0C00
++1800
++3000
++6300
++7F00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char123
++ENCODING 123
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0E00
++1800
++1800
++1800
++7000
++1800
++1800
++1800
++1800
++0E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char124
++ENCODING 124
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++1800
++1800
++1800
++1800
++1800
++1800
++1800
++1800
++1800
++1800
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char125
++ENCODING 125
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++7000
++1800
++1800
++1800
++0E00
++1800
++1800
++1800
++1800
++7000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char126
++ENCODING 126
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++3B00
++6E00
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char127
++ENCODING 127
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++7F00
++7F00
++7F00
++7F00
++7F00
++7F00
++7F00
++7F00
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char0
++ENCODING 128
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0F80
++0F80
++0F80
++0F80
++0F80
++ENDCHAR
++STARTCHAR char1
++ENCODING 129
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++F000
++F000
++F000
++F000
++F000
++0000
++0000
++0000
++0000
++0000
++0000
++0F80
++0F80
++0F80
++0F80
++0F80
++ENDCHAR
++STARTCHAR char2
++ENCODING 130
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0F80
++0F80
++0F80
++0F80
++0F80
++0000
++0000
++0000
++0000
++0000
++0000
++0F80
++0F80
++0F80
++0F80
++0F80
++ENDCHAR
++STARTCHAR char1
++ENCODING 131
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++FF80
++FF80
++FF80
++FF80
++FF80
++0000
++0000
++0000
++0000
++0000
++0000
++0F80
++0F80
++0F80
++0F80
++0F80
++ENDCHAR
++STARTCHAR char0
++ENCODING 132
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++F000
++F000
++F000
++F000
++F000
++F000
++0F80
++0F80
++0F80
++0F80
++0F80
++ENDCHAR
++STARTCHAR char1
++ENCODING 133
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++0F80
++0F80
++0F80
++0F80
++0F80
++ENDCHAR
++STARTCHAR char2
++ENCODING 134
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0F80
++0F80
++0F80
++0F80
++0F80
++F000
++F000
++F000
++F000
++F000
++F000
++0F80
++0F80
++0F80
++0F80
++0F80
++ENDCHAR
++STARTCHAR char1
++ENCODING 135
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++FF80
++FF80
++FF80
++FF80
++FF80
++F000
++F000
++F000
++F000
++F000
++F000
++0F80
++0F80
++0F80
++0F80
++0F80
++ENDCHAR
++STARTCHAR char0
++ENCODING 136
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++ENDCHAR
++STARTCHAR char1
++ENCODING 137
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++F000
++F000
++F000
++F000
++F000
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++ENDCHAR
++STARTCHAR char2
++ENCODING 138
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++ENDCHAR
++STARTCHAR char1
++ENCODING 139
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++FF80
++FF80
++FF80
++FF80
++FF80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++ENDCHAR
++STARTCHAR char0
++ENCODING 140
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++0F80
++0F80
++0F80
++0F80
++0F80
++ENDCHAR
++STARTCHAR char1
++ENCODING 141
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++F000
++F000
++F000
++F000
++F000
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++0F80
++0F80
++0F80
++0F80
++0F80
++ENDCHAR
++STARTCHAR char2
++ENCODING 142
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0F80
++0F80
++0F80
++0F80
++0F80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++0F80
++0F80
++0F80
++0F80
++0F80
++ENDCHAR
++STARTCHAR char1
++ENCODING 143
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++0F80
++0F80
++0F80
++0F80
++0F80
++ENDCHAR
++STARTCHAR char0
++ENCODING 144
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++FF80
++FF80
++FF80
++FF80
++FF80
++ENDCHAR
++STARTCHAR char1
++ENCODING 145
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++F000
++F000
++F000
++F000
++F000
++0000
++0000
++0000
++0000
++0000
++0000
++FF80
++FF80
++FF80
++FF80
++FF80
++ENDCHAR
++STARTCHAR char2
++ENCODING 146
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0F80
++0F80
++0F80
++0F80
++0F80
++0000
++0000
++0000
++0000
++0000
++0000
++FF80
++FF80
++FF80
++FF80
++FF80
++ENDCHAR
++STARTCHAR char1
++ENCODING 147
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++FF80
++FF80
++FF80
++FF80
++FF80
++0000
++0000
++0000
++0000
++0000
++0000
++FF80
++FF80
++FF80
++FF80
++FF80
++ENDCHAR
++STARTCHAR char0
++ENCODING 148
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++F000
++F000
++F000
++F000
++F000
++F000
++FF80
++FF80
++FF80
++FF80
++FF80
++ENDCHAR
++STARTCHAR char1
++ENCODING 149
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++FF80
++FF80
++FF80
++FF80
++FF80
++ENDCHAR
++STARTCHAR char2
++ENCODING 150
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0F80
++0F80
++0F80
++0F80
++0F80
++F000
++F000
++F000
++F000
++F000
++F000
++FF80
++FF80
++FF80
++FF80
++FF80
++ENDCHAR
++STARTCHAR char1
++ENCODING 151
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++FF80
++FF80
++FF80
++FF80
++FF80
++F000
++F000
++F000
++F000
++F000
++F000
++FF80
++FF80
++FF80
++FF80
++FF80
++ENDCHAR
++STARTCHAR char0
++ENCODING 152
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++FF80
++FF80
++FF80
++FF80
++FF80
++ENDCHAR
++STARTCHAR char1
++ENCODING 153
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++F000
++F000
++F000
++F000
++F000
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++FF80
++FF80
++FF80
++FF80
++FF80
++ENDCHAR
++STARTCHAR char2
++ENCODING 154
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++FF80
++FF80
++FF80
++FF80
++FF80
++ENDCHAR
++STARTCHAR char1
++ENCODING 155
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++FF80
++FF80
++FF80
++FF80
++FF80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++FF80
++FF80
++FF80
++FF80
++FF80
++ENDCHAR
++STARTCHAR char0
++ENCODING 156
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++ENDCHAR
++STARTCHAR char1
++ENCODING 157
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++F000
++F000
++F000
++F000
++F000
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++ENDCHAR
++STARTCHAR char2
++ENCODING 158
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0F80
++0F80
++0F80
++0F80
++0F80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++ENDCHAR
++STARTCHAR char1
++ENCODING 159
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++ENDCHAR
++STARTCHAR char160
++ENCODING 160
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++FF80
++0880
++0880
++0880
++0880
++FF80
++0880
++0880
++0880
++0880
++0880
++FF80
++0880
++0880
++0880
++0880
++ENDCHAR
++STARTCHAR char161
++ENCODING 161
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++1800
++1800
++0000
++1800
++1800
++1800
++3C00
++3C00
++3C00
++1800
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char162
++ENCODING 162
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++1800
++1800
++7E00
++C300
++C000
++C000
++C000
++C300
++7E00
++1800
++1800
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char163
++ENCODING 163
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++1C00
++3600
++3200
++3000
++7800
++3000
++3000
++3000
++3000
++7300
++7E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char164
++ENCODING 164
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++4100
++6300
++3E00
++6300
++6300
++6300
++6300
++3E00
++6300
++4100
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char165
++ENCODING 165
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++C300
++6600
++3C00
++1800
++FF00
++1800
++FF00
++1800
++1800
++1800
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char166
++ENCODING 166
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++6600
++6600
++6600
++6600
++6600
++6600
++6600
++6600
++6600
++6600
++6600
++6600
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char167
++ENCODING 167
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++3E00
++6300
++3000
++1C00
++3600
++6300
++6300
++3600
++1C00
++0600
++6300
++3E00
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char168
++ENCODING 168
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++3C00
++7E00
++DB00
++FF00
++BD00
++C300
++E700
++FF00
++7E00
++3C00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char169
++ENCODING 169
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++3E00
++6300
++4100
++5D00
++5100
++5100
++5D00
++4100
++6300
++3E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char170
++ENCODING 170
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++3800
++0C00
++3C00
++6400
++3C00
++0000
++7C00
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char171
++ENCODING 171
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++1800
++3000
++7F00
++7F00
++3000
++1800
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char172
++ENCODING 172
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++1800
++3C00
++7E00
++5A00
++1800
++1800
++1800
++1800
++1800
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char173
++ENCODING 173
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++FF80
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char174
++ENCODING 174
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++3E00
++6300
++4100
++5D00
++5500
++5900
++5500
++4100
++6300
++3E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char175
++ENCODING 175
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++7F00
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char176
++ENCODING 176
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++1C00
++3600
++3600
++1C00
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char177
++ENCODING 177
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++1800
++1800
++7E00
++1800
++1800
++0000
++0000
++7E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char178
++ENCODING 178
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++3800
++6C00
++1800
++3000
++6400
++7C00
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char179
++ENCODING 179
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++7C00
++0C00
++1800
++0C00
++6C00
++3800
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char180
++ENCODING 180
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++1800
++3000
++6000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char181
++ENCODING 181
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++6600
++6600
++6600
++6600
++6600
++7E00
++6300
++6000
++C000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char182
++ENCODING 182
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++7F00
++DB00
++DB00
++DB00
++7B00
++1B00
++1B00
++1B00
++1B00
++1B00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char183
++ENCODING 183
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++1800
++1800
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char184
++ENCODING 184
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0080
++0100
++0300
++0600
++0C00
++1C00
++3000
++7F00
++7700
++0E00
++1C00
++1800
++3000
++6000
++8000
++0000
++ENDCHAR
++STARTCHAR char185
++ENCODING 185
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++3000
++7000
++3000
++3000
++3000
++7800
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char186
++ENCODING 186
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++3800
++6C00
++4400
++6C00
++3800
++0000
++7C00
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char187
++ENCODING 187
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++0C00
++0600
++7F00
++7F00
++0600
++0C00
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char188
++ENCODING 188
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++6000
++6000
++6100
++6300
++6600
++0C00
++1800
++3300
++6700
++4B00
++1F00
++0300
++0300
++0000
++0000
++ENDCHAR
++STARTCHAR char189
++ENCODING 189
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++6000
++6000
++6100
++6300
++6600
++0C00
++1800
++3000
++6700
++4D80
++0300
++0600
++0F80
++0000
++0000
++ENDCHAR
++STARTCHAR char190
++ENCODING 190
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++7800
++1800
++3900
++1B00
++7600
++0C00
++1800
++3300
++6700
++4B00
++1F00
++0300
++0300
++0000
++0000
++ENDCHAR
++STARTCHAR char191
++ENCODING 191
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++1800
++1800
++0000
++1800
++1800
++3000
++6000
++6300
++6300
++3E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char238
++ENCODING 192
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++CE00
++DB00
++DB00
++FB00
++DB00
++DB00
++CE00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char160
++ENCODING 193
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++7800
++0C00
++7C00
++CC00
++CC00
++CC00
++7600
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char161
++ENCODING 194
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0200
++0600
++3C00
++6000
++6000
++7C00
++6600
++6600
++6600
++6600
++3C00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char230
++ENCODING 195
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++CC00
++CC00
++CC00
++CC00
++CC00
++CC00
++FE00
++0600
++0600
++0000
++0000
++ENDCHAR
++STARTCHAR char164
++ENCODING 196
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++1E00
++3600
++3600
++6600
++6600
++6600
++FF00
++C300
++C300
++0000
++0000
++ENDCHAR
++STARTCHAR char165
++ENCODING 197
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++7C00
++C600
++FE00
++C000
++C000
++C600
++7C00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char228
++ENCODING 198
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++3C00
++1800
++7E00
++DB00
++DB00
++DB00
++DB00
++7E00
++1800
++1800
++3C00
++0000
++ENDCHAR
++STARTCHAR char163
++ENCODING 199
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++7E00
++3200
++3200
++3000
++3000
++3000
++7800
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char229
++ENCODING 200
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++C600
++6C00
++3800
++3800
++3800
++6C00
++C600
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char168
++ENCODING 201
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++C600
++C600
++CE00
++D600
++E600
++C600
++C600
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char169
++ENCODING 202
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++3800
++3800
++C600
++C600
++CE00
++D600
++E600
++C600
++C600
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char170
++ENCODING 203
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++E600
++6C00
++7800
++7800
++6C00
++6600
++E600
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char171
++ENCODING 204
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++1E00
++3600
++6600
++6600
++6600
++6600
++6600
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char172
++ENCODING 205
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++C600
++EE00
++FE00
++FE00
++D600
++D600
++C600
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char173
++ENCODING 206
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++C600
++C600
++C600
++FE00
++C600
++C600
++C600
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char174
++ENCODING 207
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++7C00
++C600
++C600
++C600
++C600
++C600
++7C00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char175
++ENCODING 208
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++FE00
++C600
++C600
++C600
++C600
++C600
++C600
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char239
++ENCODING 209
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++7E00
++CC00
++CC00
++FC00
++6C00
++CC00
++CE00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char224
++ENCODING 210
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++DC00
++6600
++6600
++6600
++6600
++6600
++7C00
++6000
++6000
++F000
++0000
++ENDCHAR
++STARTCHAR char225
++ENCODING 211
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++7C00
++C600
++C000
++C000
++C000
++C600
++7C00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char226
++ENCODING 212
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++7E00
++5A00
++1800
++1800
++1800
++1800
++3C00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char227
++ENCODING 213
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++C600
++C600
++C600
++C600
++C600
++7E00
++0600
++0600
++C600
++7C00
++0000
++ENDCHAR
++STARTCHAR char166
++ENCODING 214
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++D600
++D600
++5400
++7C00
++5400
++D600
++D600
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char162
++ENCODING 215
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++FC00
++6600
++6600
++7C00
++6600
++6600
++FC00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char236
++ENCODING 216
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++F000
++6000
++6000
++7C00
++6600
++6600
++FC00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char235
++ENCODING 217
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++C600
++C600
++C600
++F600
++DE00
++DE00
++F600
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char167
++ENCODING 218
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++3C00
++6600
++0600
++0C00
++0600
++6600
++3C00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char232
++ENCODING 219
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++D600
++D600
++D600
++D600
++D600
++D600
++FE00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char237
++ENCODING 220
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++3C00
++6600
++0600
++1E00
++0600
++6600
++3C00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char233
++ENCODING 221
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++D600
++D600
++D600
++D600
++D600
++D600
++FE00
++0300
++0300
++0000
++0000
++ENDCHAR
++STARTCHAR char231
++ENCODING 222
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++C600
++C600
++C600
++C600
++7E00
++0600
++0600
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char234
++ENCODING 223
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++F800
++B000
++3000
++3E00
++3300
++3300
++7E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char158
++ENCODING 224
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++CE00
++DB00
++DB00
++DB00
++FB00
++DB00
++DB00
++DB00
++DB00
++CE00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char128
++ENCODING 225
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++1E00
++3600
++6600
++C600
++C600
++FE00
++C600
++C600
++C600
++C600
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char129
++ENCODING 226
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++FE00
++6200
++6200
++6000
++7C00
++6600
++6600
++6600
++6600
++FC00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char150
++ENCODING 227
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++CC00
++CC00
++CC00
++CC00
++CC00
++CC00
++CC00
++CC00
++CC00
++FE00
++0600
++0600
++0000
++0000
++ENDCHAR
++STARTCHAR char132
++ENCODING 228
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++1E00
++3600
++6600
++6600
++6600
++6600
++6600
++6600
++6600
++FF00
++C300
++8100
++0000
++0000
++ENDCHAR
++STARTCHAR char133
++ENCODING 229
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++FE00
++6600
++6200
++6800
++7800
++6800
++6000
++6200
++6600
++FE00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char148
++ENCODING 230
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++3C00
++1800
++7E00
++DB00
++DB00
++DB00
++DB00
++DB00
++7E00
++1800
++3C00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char131
++ENCODING 231
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++FE00
++6200
++6200
++6000
++6000
++6000
++6000
++6000
++6000
++F000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char149
++ENCODING 232
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++C600
++C600
++6C00
++7C00
++3800
++3800
++7C00
++6C00
++C600
++C600
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char136
++ENCODING 233
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++C600
++C600
++CE00
++CE00
++D600
++E600
++E600
++C600
++C600
++C600
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char137
++ENCODING 234
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++3800
++3800
++C600
++C600
++CE00
++CE00
++D600
++E600
++E600
++C600
++C600
++C600
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char138
++ENCODING 235
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++E600
++6600
++6C00
++6C00
++7800
++7800
++6C00
++6C00
++6600
++E600
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char139
++ENCODING 236
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++1E00
++3600
++6600
++C600
++C600
++C600
++C600
++C600
++C600
++C600
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char140
++ENCODING 237
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++C600
++EE00
++FE00
++FE00
++D600
++C600
++C600
++C600
++C600
++C600
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char141
++ENCODING 238
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++C600
++C600
++C600
++C600
++FE00
++C600
++C600
++C600
++C600
++C600
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char142
++ENCODING 239
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++7C00
++C600
++C600
++C600
++C600
++C600
++C600
++C600
++C600
++7C00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char143
++ENCODING 240
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++FE00
++C600
++C600
++C600
++C600
++C600
++C600
++C600
++C600
++C600
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char159
++ENCODING 241
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++3F00
++6600
++6600
++6600
++3E00
++3E00
++6600
++6600
++6600
++E700
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char144
++ENCODING 242
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++FC00
++6600
++6600
++6600
++7C00
++6000
++6000
++6000
++6000
++F000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char145
++ENCODING 243
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++3C00
++6600
++C200
++C000
++C000
++C000
++C000
++C200
++6600
++3C00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char146
++ENCODING 244
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++7E00
++5A00
++1800
++1800
++1800
++1800
++1800
++1800
++1800
++3C00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char147
++ENCODING 245
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++C600
++C600
++C600
++C600
++C600
++7E00
++0600
++0600
++C600
++7C00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char134
++ENCODING 246
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++D600
++D600
++5400
++5400
++7C00
++7C00
++5400
++D600
++D600
++D600
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char130
++ENCODING 247
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++FC00
++6600
++6600
++6600
++7C00
++6600
++6600
++6600
++6600
++FC00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char156
++ENCODING 248
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++F000
++6000
++6000
++6000
++7C00
++6600
++6600
++6600
++6600
++FC00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char155
++ENCODING 249
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++C300
++C300
++C300
++C300
++F300
++DB00
++DB00
++DB00
++DB00
++F300
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char135
++ENCODING 250
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++7C00
++C600
++0600
++0600
++3C00
++0600
++0600
++0600
++C600
++7C00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char152
++ENCODING 251
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++DB00
++DB00
++DB00
++DB00
++DB00
++DB00
++DB00
++DB00
++DB00
++FF00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char157
++ENCODING 252
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++7C00
++C600
++0600
++2600
++3E00
++2600
++0600
++0600
++C600
++7C00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char153
++ENCODING 253
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++DB00
++DB00
++DB00
++DB00
++DB00
++DB00
++DB00
++DB00
++DB00
++FF00
++0300
++0300
++0000
++0000
++ENDCHAR
++STARTCHAR char151
++ENCODING 254
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++C600
++C600
++C600
++C600
++C600
++7E00
++0600
++0600
++0600
++0600
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char154
++ENCODING 255
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++F800
++B000
++3000
++3000
++3C00
++3600
++3600
++3600
++3600
++7C00
++0000
++0000
++0000
++0000
++ENDCHAR
++ENDFONT
+diff -r af23d23c278b util/alevt/vtxt-latin-1.bdf
+--- /dev/null Thu Jan 01 00:00:00 1970 +0000
++++ b/util/alevt/vtxt-latin-1.bdf Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,5906 @@
++STARTFONT 2.1
++FONT -alevt-teletext-medium-r-normal--16-1-75-75-c-90-fontspecific-1
++SIZE 1 75 75
++FONTBOUNDINGBOX 9 16 0 -4
++STARTPROPERTIES 10
++POINT_SIZE 1
++PIXEL_SIZE 16
++RESOLUTION_X 75
++RESOLUTION_Y 75
++FONT_ASCENT 12
++FONT_DESCENT 4
++AVERAGE_WIDTH 90
++SPACING "C"
++_XMBDFED_INFO "Edited with xmbdfed 2.4."
++FONT "vtxt"
++ENDPROPERTIES
++CHARS 256
++STARTCHAR char0
++ENCODING 0
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char1
++ENCODING 1
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++F000
++F000
++F000
++F000
++F000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char2
++ENCODING 2
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0F80
++0F80
++0F80
++0F80
++0F80
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char1
++ENCODING 3
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++FF80
++FF80
++FF80
++FF80
++FF80
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char0
++ENCODING 4
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++F000
++F000
++F000
++F000
++F000
++F000
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char1
++ENCODING 5
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char2
++ENCODING 6
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0F80
++0F80
++0F80
++0F80
++0F80
++F000
++F000
++F000
++F000
++F000
++F000
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char1
++ENCODING 7
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++FF80
++FF80
++FF80
++FF80
++FF80
++F000
++F000
++F000
++F000
++F000
++F000
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char0
++ENCODING 8
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char1
++ENCODING 9
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++F000
++F000
++F000
++F000
++F000
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char2
++ENCODING 10
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char1
++ENCODING 11
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++FF80
++FF80
++FF80
++FF80
++FF80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char0
++ENCODING 12
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char1
++ENCODING 13
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++F000
++F000
++F000
++F000
++F000
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char2
++ENCODING 14
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0F80
++0F80
++0F80
++0F80
++0F80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char1
++ENCODING 15
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char0
++ENCODING 16
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++F000
++F000
++F000
++F000
++F000
++ENDCHAR
++STARTCHAR char1
++ENCODING 17
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++F000
++F000
++F000
++F000
++F000
++0000
++0000
++0000
++0000
++0000
++0000
++F000
++F000
++F000
++F000
++F000
++ENDCHAR
++STARTCHAR char2
++ENCODING 18
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0F80
++0F80
++0F80
++0F80
++0F80
++0000
++0000
++0000
++0000
++0000
++0000
++F000
++F000
++F000
++F000
++F000
++ENDCHAR
++STARTCHAR char1
++ENCODING 19
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++FF80
++FF80
++FF80
++FF80
++FF80
++0000
++0000
++0000
++0000
++0000
++0000
++F000
++F000
++F000
++F000
++F000
++ENDCHAR
++STARTCHAR char0
++ENCODING 20
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++ENDCHAR
++STARTCHAR char1
++ENCODING 21
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++ENDCHAR
++STARTCHAR char2
++ENCODING 22
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0F80
++0F80
++0F80
++0F80
++0F80
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++ENDCHAR
++STARTCHAR char1
++ENCODING 23
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++FF80
++FF80
++FF80
++FF80
++FF80
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++ENDCHAR
++STARTCHAR char0
++ENCODING 24
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++F000
++F000
++F000
++F000
++F000
++ENDCHAR
++STARTCHAR char1
++ENCODING 25
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++F000
++F000
++F000
++F000
++F000
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++F000
++F000
++F000
++F000
++F000
++ENDCHAR
++STARTCHAR char2
++ENCODING 26
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++F000
++F000
++F000
++F000
++F000
++ENDCHAR
++STARTCHAR char1
++ENCODING 27
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++FF80
++FF80
++FF80
++FF80
++FF80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++F000
++F000
++F000
++F000
++F000
++ENDCHAR
++STARTCHAR char0
++ENCODING 28
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++F000
++F000
++F000
++F000
++F000
++ENDCHAR
++STARTCHAR char1
++ENCODING 29
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++F000
++F000
++F000
++F000
++F000
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++F000
++F000
++F000
++F000
++F000
++ENDCHAR
++STARTCHAR char2
++ENCODING 30
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0F80
++0F80
++0F80
++0F80
++0F80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++F000
++F000
++F000
++F000
++F000
++ENDCHAR
++STARTCHAR char1
++ENCODING 31
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++F000
++F000
++F000
++F000
++F000
++ENDCHAR
++STARTCHAR char32
++ENCODING 32
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char33
++ENCODING 33
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++1800
++3C00
++3C00
++3C00
++1800
++1800
++1800
++0000
++1800
++1800
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char34
++ENCODING 34
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++6600
++6600
++6600
++2400
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char35
++ENCODING 35
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++3600
++3600
++7F00
++3600
++3600
++3600
++7F00
++3600
++3600
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char36
++ENCODING 36
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0C00
++0C00
++3E00
++6300
++6100
++6000
++3E00
++0300
++0300
++4300
++6300
++3E00
++0C00
++0C00
++0000
++0000
++ENDCHAR
++STARTCHAR char37
++ENCODING 37
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++6100
++6300
++0600
++0C00
++1800
++3000
++6300
++4300
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char38
++ENCODING 38
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++1C00
++3600
++3600
++1C00
++3B00
++6E00
++6600
++6600
++6600
++3B00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char39
++ENCODING 39
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++3000
++3000
++3000
++6000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char40
++ENCODING 40
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0C00
++1800
++3000
++3000
++3000
++3000
++3000
++3000
++1800
++0C00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char41
++ENCODING 41
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++3000
++1800
++0C00
++0C00
++0C00
++0C00
++0C00
++0C00
++1800
++3000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char42
++ENCODING 42
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++6600
++3C00
++FF00
++3C00
++6600
++0000
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char43
++ENCODING 43
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++1800
++1800
++7E00
++1800
++1800
++0000
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char44
++ENCODING 44
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++1800
++1800
++1800
++3000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char45
++ENCODING 45
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++7F00
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char46
++ENCODING 46
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++1800
++1800
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char47
++ENCODING 47
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0100
++0300
++0600
++0C00
++1800
++3000
++6000
++4000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char48
++ENCODING 48
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++3C00
++6600
++C300
++C300
++DB00
++DB00
++C300
++C300
++6600
++3C00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char49
++ENCODING 49
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++1800
++3800
++7800
++1800
++1800
++1800
++1800
++1800
++1800
++7E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char50
++ENCODING 50
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++3E00
++6300
++0300
++0600
++0C00
++1800
++3000
++6000
++6300
++7F00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char51
++ENCODING 51
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++3E00
++6300
++0300
++0300
++1E00
++0300
++0300
++0300
++6300
++3E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char52
++ENCODING 52
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0600
++0E00
++1E00
++3600
++6600
++7F00
++0600
++0600
++0600
++0F00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char53
++ENCODING 53
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++7F00
++6000
++6000
++6000
++7E00
++0300
++0300
++0300
++6300
++3E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char54
++ENCODING 54
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++1C00
++3000
++6000
++6000
++7E00
++6300
++6300
++6300
++6300
++3E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char55
++ENCODING 55
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++7F00
++6300
++0300
++0300
++0600
++0C00
++1800
++1800
++1800
++1800
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char56
++ENCODING 56
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++3E00
++6300
++6300
++6300
++3E00
++6300
++6300
++6300
++6300
++3E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char57
++ENCODING 57
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++3E00
++6300
++6300
++6300
++3F00
++0300
++0300
++0300
++0600
++3C00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char58
++ENCODING 58
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++1800
++1800
++0000
++0000
++0000
++1800
++1800
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char59
++ENCODING 59
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++1800
++1800
++0000
++0000
++0000
++1800
++1800
++1800
++3000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char60
++ENCODING 60
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0600
++0C00
++1800
++3000
++6000
++3000
++1800
++0C00
++0600
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char61
++ENCODING 61
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++7E00
++0000
++0000
++7E00
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char62
++ENCODING 62
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++6000
++3000
++1800
++0C00
++0600
++0C00
++1800
++3000
++6000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char63
++ENCODING 63
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++3E00
++6300
++6300
++0600
++0C00
++0C00
++0C00
++0000
++0C00
++0C00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char64
++ENCODING 64
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++3E00
++6300
++6300
++6F00
++6F00
++6F00
++6E00
++6000
++3E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char65
++ENCODING 65
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0800
++1C00
++3600
++6300
++6300
++7F00
++6300
++6300
++6300
++6300
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char66
++ENCODING 66
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++7E00
++3300
++3300
++3300
++3E00
++3300
++3300
++3300
++3300
++7E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char67
++ENCODING 67
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++1E00
++3300
++6100
++6000
++6000
++6000
++6000
++6100
++3300
++1E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char68
++ENCODING 68
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++7C00
++3600
++3300
++3300
++3300
++3300
++3300
++3300
++3600
++7C00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char69
++ENCODING 69
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++7F00
++3300
++3100
++3400
++3C00
++3400
++3000
++3100
++3300
++7F00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char70
++ENCODING 70
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++7F00
++3300
++3100
++3400
++3C00
++3400
++3000
++3000
++3000
++7800
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char71
++ENCODING 71
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++1E00
++3300
++6100
++6000
++6000
++6F00
++6300
++6300
++3300
++1D00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char72
++ENCODING 72
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++6300
++6300
++6300
++6300
++7F00
++6300
++6300
++6300
++6300
++6300
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char73
++ENCODING 73
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++3C00
++1800
++1800
++1800
++1800
++1800
++1800
++1800
++1800
++3C00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char74
++ENCODING 74
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0F00
++0600
++0600
++0600
++0600
++0600
++6600
++6600
++6600
++3C00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char75
++ENCODING 75
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++7300
++3300
++3300
++3600
++3C00
++3C00
++3600
++3300
++3300
++7300
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char76
++ENCODING 76
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++7800
++3000
++3000
++3000
++3000
++3000
++3000
++3100
++3300
++7F00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char77
++ENCODING 77
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++C300
++E700
++FF00
++FF00
++DB00
++C300
++C300
++C300
++C300
++C300
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char78
++ENCODING 78
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++6300
++7300
++7B00
++7F00
++6F00
++6700
++6300
++6300
++6300
++6300
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char79
++ENCODING 79
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++3E00
++6300
++6300
++6300
++6300
++6300
++6300
++6300
++6300
++3E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char80
++ENCODING 80
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++7E00
++3300
++3300
++3300
++3E00
++3000
++3000
++3000
++3000
++7800
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char81
++ENCODING 81
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++3E00
++6300
++6300
++6300
++6300
++6300
++6300
++6B00
++6F00
++3E00
++0600
++0700
++0000
++0000
++ENDCHAR
++STARTCHAR char82
++ENCODING 82
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++7E00
++3300
++3300
++3300
++3E00
++3600
++3300
++3300
++3300
++7300
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char83
++ENCODING 83
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++3E00
++6300
++6300
++3000
++1C00
++0600
++0300
++6300
++6300
++3E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char84
++ENCODING 84
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++FF00
++DB00
++9900
++1800
++1800
++1800
++1800
++1800
++1800
++3C00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char85
++ENCODING 85
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++6300
++6300
++6300
++6300
++6300
++6300
++6300
++6300
++6300
++3E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char86
++ENCODING 86
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++C300
++C300
++C300
++C300
++C300
++C300
++C300
++6600
++3C00
++1800
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char87
++ENCODING 87
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++C300
++C300
++C300
++C300
++C300
++DB00
++DB00
++FF00
++6600
++6600
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char88
++ENCODING 88
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++C300
++C300
++6600
++3C00
++1800
++1800
++3C00
++6600
++C300
++C300
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char89
++ENCODING 89
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++C300
++C300
++C300
++6600
++3C00
++1800
++1800
++1800
++1800
++3C00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char90
++ENCODING 90
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++FF00
++C300
++8600
++0C00
++1800
++3000
++6000
++C100
++C300
++FF00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char91
++ENCODING 91
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++3C00
++3000
++3000
++3000
++3000
++3000
++3000
++3000
++3000
++3C00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char92
++ENCODING 92
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++4000
++6000
++7000
++3800
++1C00
++0E00
++0700
++0300
++0100
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char93
++ENCODING 93
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++3C00
++0C00
++0C00
++0C00
++0C00
++0C00
++0C00
++0C00
++0C00
++3C00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char94
++ENCODING 94
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0800
++1C00
++3600
++6300
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char95
++ENCODING 95
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++FF80
++0000
++0000
++ENDCHAR
++STARTCHAR char96
++ENCODING 96
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++3000
++3000
++1800
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char97
++ENCODING 97
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++3C00
++0600
++3E00
++6600
++6600
++6600
++3B00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char98
++ENCODING 98
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++7000
++3000
++3000
++3C00
++3600
++3300
++3300
++3300
++3300
++3E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char99
++ENCODING 99
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++3E00
++6300
++6000
++6000
++6000
++6300
++3E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char100
++ENCODING 100
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0E00
++0600
++0600
++1E00
++3600
++6600
++6600
++6600
++6600
++3B00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char101
++ENCODING 101
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++3E00
++6300
++7F00
++6000
++6000
++6300
++3E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char102
++ENCODING 102
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++1C00
++3600
++3200
++3000
++7800
++3000
++3000
++3000
++3000
++7800
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char103
++ENCODING 103
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++3B00
++6600
++6600
++6600
++6600
++6600
++3E00
++0600
++6600
++3C00
++0000
++ENDCHAR
++STARTCHAR char104
++ENCODING 104
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++7000
++3000
++3000
++3600
++3B00
++3300
++3300
++3300
++3300
++7300
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char105
++ENCODING 105
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++1800
++1800
++0000
++3800
++1800
++1800
++1800
++1800
++1800
++3C00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char106
++ENCODING 106
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0600
++0600
++0000
++0E00
++0600
++0600
++0600
++0600
++0600
++0600
++6600
++6600
++3C00
++0000
++ENDCHAR
++STARTCHAR char107
++ENCODING 107
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++7000
++3000
++3000
++3300
++3600
++3C00
++3C00
++3600
++3300
++7300
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char108
++ENCODING 108
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++3800
++1800
++1800
++1800
++1800
++1800
++1800
++1800
++1800
++3C00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char109
++ENCODING 109
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++E600
++FF00
++DB00
++DB00
++DB00
++DB00
++DB00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char110
++ENCODING 110
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++6E00
++3300
++3300
++3300
++3300
++3300
++3300
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char111
++ENCODING 111
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++3E00
++6300
++6300
++6300
++6300
++6300
++3E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char112
++ENCODING 112
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++6E00
++3300
++3300
++3300
++3300
++3300
++3E00
++3000
++3000
++7800
++0000
++ENDCHAR
++STARTCHAR char113
++ENCODING 113
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++3B00
++6600
++6600
++6600
++6600
++6600
++3E00
++0600
++0600
++0F00
++0000
++ENDCHAR
++STARTCHAR char114
++ENCODING 114
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++6E00
++3B00
++3300
++3000
++3000
++3000
++7800
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char115
++ENCODING 115
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++3E00
++6300
++3000
++1C00
++0600
++6300
++3E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char116
++ENCODING 116
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0800
++1800
++1800
++7E00
++1800
++1800
++1800
++1800
++1B00
++0E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char117
++ENCODING 117
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++6600
++6600
++6600
++6600
++6600
++6600
++3B00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char118
++ENCODING 118
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++C300
++C300
++C300
++C300
++6600
++3C00
++1800
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char119
++ENCODING 119
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++C300
++C300
++C300
++DB00
++DB00
++FF00
++6600
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char120
++ENCODING 120
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++C300
++6600
++3C00
++1800
++3C00
++6600
++C300
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char121
++ENCODING 121
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++6300
++6300
++6300
++6300
++6300
++6300
++3F00
++0300
++0600
++7C00
++0000
++ENDCHAR
++STARTCHAR char122
++ENCODING 122
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++7F00
++6600
++0C00
++1800
++3000
++6300
++7F00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char123
++ENCODING 123
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0E00
++1800
++1800
++1800
++7000
++1800
++1800
++1800
++1800
++0E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char124
++ENCODING 124
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++1800
++1800
++1800
++1800
++1800
++1800
++1800
++1800
++1800
++1800
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char125
++ENCODING 125
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++7000
++1800
++1800
++1800
++0E00
++1800
++1800
++1800
++1800
++7000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char126
++ENCODING 126
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++3B00
++6E00
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char127
++ENCODING 127
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++7F00
++7F00
++7F00
++7F00
++7F00
++7F00
++7F00
++7F00
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char0
++ENCODING 128
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0F80
++0F80
++0F80
++0F80
++0F80
++ENDCHAR
++STARTCHAR char1
++ENCODING 129
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++F000
++F000
++F000
++F000
++F000
++0000
++0000
++0000
++0000
++0000
++0000
++0F80
++0F80
++0F80
++0F80
++0F80
++ENDCHAR
++STARTCHAR char2
++ENCODING 130
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0F80
++0F80
++0F80
++0F80
++0F80
++0000
++0000
++0000
++0000
++0000
++0000
++0F80
++0F80
++0F80
++0F80
++0F80
++ENDCHAR
++STARTCHAR char1
++ENCODING 131
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++FF80
++FF80
++FF80
++FF80
++FF80
++0000
++0000
++0000
++0000
++0000
++0000
++0F80
++0F80
++0F80
++0F80
++0F80
++ENDCHAR
++STARTCHAR char0
++ENCODING 132
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++F000
++F000
++F000
++F000
++F000
++F000
++0F80
++0F80
++0F80
++0F80
++0F80
++ENDCHAR
++STARTCHAR char1
++ENCODING 133
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++0F80
++0F80
++0F80
++0F80
++0F80
++ENDCHAR
++STARTCHAR char2
++ENCODING 134
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0F80
++0F80
++0F80
++0F80
++0F80
++F000
++F000
++F000
++F000
++F000
++F000
++0F80
++0F80
++0F80
++0F80
++0F80
++ENDCHAR
++STARTCHAR char1
++ENCODING 135
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++FF80
++FF80
++FF80
++FF80
++FF80
++F000
++F000
++F000
++F000
++F000
++F000
++0F80
++0F80
++0F80
++0F80
++0F80
++ENDCHAR
++STARTCHAR char0
++ENCODING 136
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++ENDCHAR
++STARTCHAR char1
++ENCODING 137
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++F000
++F000
++F000
++F000
++F000
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++ENDCHAR
++STARTCHAR char2
++ENCODING 138
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++ENDCHAR
++STARTCHAR char1
++ENCODING 139
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++FF80
++FF80
++FF80
++FF80
++FF80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++ENDCHAR
++STARTCHAR char0
++ENCODING 140
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++0F80
++0F80
++0F80
++0F80
++0F80
++ENDCHAR
++STARTCHAR char1
++ENCODING 141
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++F000
++F000
++F000
++F000
++F000
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++0F80
++0F80
++0F80
++0F80
++0F80
++ENDCHAR
++STARTCHAR char2
++ENCODING 142
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0F80
++0F80
++0F80
++0F80
++0F80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++0F80
++0F80
++0F80
++0F80
++0F80
++ENDCHAR
++STARTCHAR char1
++ENCODING 143
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++0F80
++0F80
++0F80
++0F80
++0F80
++ENDCHAR
++STARTCHAR char0
++ENCODING 144
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++FF80
++FF80
++FF80
++FF80
++FF80
++ENDCHAR
++STARTCHAR char1
++ENCODING 145
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++F000
++F000
++F000
++F000
++F000
++0000
++0000
++0000
++0000
++0000
++0000
++FF80
++FF80
++FF80
++FF80
++FF80
++ENDCHAR
++STARTCHAR char2
++ENCODING 146
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0F80
++0F80
++0F80
++0F80
++0F80
++0000
++0000
++0000
++0000
++0000
++0000
++FF80
++FF80
++FF80
++FF80
++FF80
++ENDCHAR
++STARTCHAR char1
++ENCODING 147
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++FF80
++FF80
++FF80
++FF80
++FF80
++0000
++0000
++0000
++0000
++0000
++0000
++FF80
++FF80
++FF80
++FF80
++FF80
++ENDCHAR
++STARTCHAR char0
++ENCODING 148
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++F000
++F000
++F000
++F000
++F000
++F000
++FF80
++FF80
++FF80
++FF80
++FF80
++ENDCHAR
++STARTCHAR char1
++ENCODING 149
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++FF80
++FF80
++FF80
++FF80
++FF80
++ENDCHAR
++STARTCHAR char2
++ENCODING 150
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0F80
++0F80
++0F80
++0F80
++0F80
++F000
++F000
++F000
++F000
++F000
++F000
++FF80
++FF80
++FF80
++FF80
++FF80
++ENDCHAR
++STARTCHAR char1
++ENCODING 151
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++FF80
++FF80
++FF80
++FF80
++FF80
++F000
++F000
++F000
++F000
++F000
++F000
++FF80
++FF80
++FF80
++FF80
++FF80
++ENDCHAR
++STARTCHAR char0
++ENCODING 152
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++FF80
++FF80
++FF80
++FF80
++FF80
++ENDCHAR
++STARTCHAR char1
++ENCODING 153
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++F000
++F000
++F000
++F000
++F000
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++FF80
++FF80
++FF80
++FF80
++FF80
++ENDCHAR
++STARTCHAR char2
++ENCODING 154
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++FF80
++FF80
++FF80
++FF80
++FF80
++ENDCHAR
++STARTCHAR char1
++ENCODING 155
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++FF80
++FF80
++FF80
++FF80
++FF80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++FF80
++FF80
++FF80
++FF80
++FF80
++ENDCHAR
++STARTCHAR char0
++ENCODING 156
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++ENDCHAR
++STARTCHAR char1
++ENCODING 157
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++F000
++F000
++F000
++F000
++F000
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++ENDCHAR
++STARTCHAR char2
++ENCODING 158
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0F80
++0F80
++0F80
++0F80
++0F80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++ENDCHAR
++STARTCHAR char1
++ENCODING 159
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++ENDCHAR
++STARTCHAR char160
++ENCODING 160
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++FF80
++0880
++0880
++0880
++0880
++FF80
++0880
++0880
++0880
++0880
++0880
++FF80
++0880
++0880
++0880
++0880
++ENDCHAR
++STARTCHAR char161
++ENCODING 161
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++1800
++1800
++0000
++1800
++1800
++1800
++3C00
++3C00
++3C00
++1800
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char162
++ENCODING 162
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++1800
++1800
++7E00
++C300
++C000
++C000
++C000
++C300
++7E00
++1800
++1800
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char163
++ENCODING 163
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++1C00
++3600
++3200
++3000
++7800
++3000
++3000
++3000
++3000
++7300
++7E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char164
++ENCODING 164
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++4100
++6300
++3E00
++6300
++6300
++6300
++6300
++3E00
++6300
++4100
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char165
++ENCODING 165
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++C300
++6600
++3C00
++1800
++FF00
++1800
++FF00
++1800
++1800
++1800
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char166
++ENCODING 166
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++6600
++6600
++6600
++6600
++6600
++6600
++6600
++6600
++6600
++6600
++6600
++6600
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char167
++ENCODING 167
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++3E00
++6300
++3000
++1C00
++3600
++6300
++6300
++3600
++1C00
++0600
++6300
++3E00
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char168
++ENCODING 168
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++3C00
++7E00
++DB00
++FF00
++BD00
++C300
++E700
++FF00
++7E00
++3C00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char169
++ENCODING 169
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++3E00
++6300
++4100
++5D00
++5100
++5100
++5D00
++4100
++6300
++3E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char170
++ENCODING 170
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++3800
++0C00
++3C00
++6400
++3C00
++0000
++7C00
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char171
++ENCODING 171
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++1800
++3000
++7F00
++7F00
++3000
++1800
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char172
++ENCODING 172
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++1800
++3C00
++7E00
++5A00
++1800
++1800
++1800
++1800
++1800
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char173
++ENCODING 173
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++FF80
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char174
++ENCODING 174
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++3E00
++6300
++4100
++5D00
++5500
++5900
++5500
++4100
++6300
++3E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char175
++ENCODING 175
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++7F00
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char176
++ENCODING 176
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++1C00
++3600
++3600
++1C00
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char177
++ENCODING 177
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++1800
++1800
++7E00
++1800
++1800
++0000
++0000
++7E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char178
++ENCODING 178
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++3800
++6C00
++1800
++3000
++6400
++7C00
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char179
++ENCODING 179
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++7C00
++0C00
++1800
++0C00
++6C00
++3800
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char180
++ENCODING 180
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++1800
++3000
++6000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char181
++ENCODING 181
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++6600
++6600
++6600
++6600
++6600
++7E00
++6300
++6000
++C000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char182
++ENCODING 182
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++7F00
++DB00
++DB00
++DB00
++7B00
++1B00
++1B00
++1B00
++1B00
++1B00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char183
++ENCODING 183
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++1800
++1800
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char184
++ENCODING 184
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0080
++0100
++0300
++0600
++0C00
++1C00
++3000
++7F00
++7700
++0E00
++1C00
++1800
++3000
++6000
++8000
++0000
++ENDCHAR
++STARTCHAR char185
++ENCODING 185
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++3000
++7000
++3000
++3000
++3000
++7800
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char186
++ENCODING 186
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++3800
++6C00
++4400
++6C00
++3800
++0000
++7C00
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char187
++ENCODING 187
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++0C00
++0600
++7F00
++7F00
++0600
++0C00
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char188
++ENCODING 188
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++6000
++6000
++6100
++6300
++6600
++0C00
++1800
++3300
++6700
++4B00
++1F00
++0300
++0300
++0000
++0000
++ENDCHAR
++STARTCHAR char189
++ENCODING 189
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++6000
++6000
++6100
++6300
++6600
++0C00
++1800
++3000
++6700
++4D80
++0300
++0600
++0F80
++0000
++0000
++ENDCHAR
++STARTCHAR char190
++ENCODING 190
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++7800
++1800
++3900
++1B00
++7600
++0C00
++1800
++3300
++6700
++4B00
++1F00
++0300
++0300
++0000
++0000
++ENDCHAR
++STARTCHAR char191
++ENCODING 191
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++1800
++1800
++0000
++1800
++1800
++3000
++6000
++6300
++6300
++3E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char192
++ENCODING 192
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++1800
++0C00
++0800
++1C00
++3600
++6300
++6300
++7F00
++6300
++6300
++6300
++6300
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char193
++ENCODING 193
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0C00
++1800
++0800
++1C00
++3600
++6300
++6300
++7F00
++6300
++6300
++6300
++6300
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char194
++ENCODING 194
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++1C00
++3600
++0800
++1C00
++3600
++6300
++6300
++7F00
++6300
++6300
++6300
++6300
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char195
++ENCODING 195
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++3B00
++6E00
++0000
++1C00
++3600
++6300
++6300
++7F00
++6300
++6300
++6300
++6300
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char196
++ENCODING 196
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++6300
++0000
++0800
++1C00
++3600
++6300
++6300
++7F00
++6300
++6300
++6300
++6300
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char197
++ENCODING 197
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++1C00
++1400
++1C00
++1C00
++3600
++6300
++6300
++7F00
++6300
++6300
++6300
++6300
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char198
++ENCODING 198
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++1F00
++3600
++6600
++6600
++7F00
++6600
++6600
++6600
++6600
++6700
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char199
++ENCODING 199
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++1E00
++3300
++6100
++6000
++6000
++6000
++6100
++3300
++1E00
++0600
++0300
++3E00
++0000
++ENDCHAR
++STARTCHAR char200
++ENCODING 200
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++1800
++0C00
++7F00
++3300
++3100
++3400
++3C00
++3400
++3000
++3100
++3300
++7F00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char201
++ENCODING 201
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0C00
++1800
++7F00
++3300
++3100
++3400
++3C00
++3400
++3000
++3100
++3300
++7F00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char202
++ENCODING 202
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++1C00
++3600
++7F00
++3300
++3100
++3400
++3C00
++3400
++3000
++3100
++3300
++7F00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char203
++ENCODING 203
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++6300
++0000
++7F00
++3300
++3100
++3400
++3C00
++3400
++3000
++3100
++3300
++7F00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char204
++ENCODING 204
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++3000
++1800
++0000
++3C00
++1800
++1800
++1800
++1800
++1800
++1800
++1800
++3C00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char205
++ENCODING 205
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0C00
++1800
++0000
++3C00
++1800
++1800
++1800
++1800
++1800
++1800
++1800
++3C00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char206
++ENCODING 206
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++3C00
++6600
++0000
++3C00
++1800
++1800
++1800
++1800
++1800
++1800
++1800
++3C00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char207
++ENCODING 207
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++6600
++0000
++3C00
++1800
++1800
++1800
++1800
++1800
++1800
++1800
++1800
++3C00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char208
++ENCODING 208
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++3C00
++3600
++3300
++3300
++7B00
++7B00
++3300
++3300
++3600
++3C00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char209
++ENCODING 209
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++3B00
++6E00
++6300
++7300
++7B00
++7F00
++6F00
++6700
++6300
++6300
++6300
++6300
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char210
++ENCODING 210
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++3000
++1800
++3E00
++6300
++6300
++6300
++6300
++6300
++6300
++6300
++6300
++3E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char211
++ENCODING 211
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0600
++0C00
++3E00
++6300
++6300
++6300
++6300
++6300
++6300
++6300
++6300
++3E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char212
++ENCODING 212
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++1C00
++3600
++3E00
++6300
++6300
++6300
++6300
++6300
++6300
++6300
++6300
++3E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char213
++ENCODING 213
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++3B00
++6E00
++3E00
++6300
++6300
++6300
++6300
++6300
++6300
++6300
++6300
++3E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char214
++ENCODING 214
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++6300
++0000
++3E00
++6300
++6300
++6300
++6300
++6300
++6300
++6300
++6300
++3E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char215
++ENCODING 215
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++6300
++3600
++1C00
++0800
++1C00
++3600
++6300
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char216
++ENCODING 216
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0100
++0300
++3E00
++6700
++6700
++6F00
++6B00
++6B00
++7B00
++7300
++7300
++3E00
++6000
++4000
++0000
++0000
++ENDCHAR
++STARTCHAR char217
++ENCODING 217
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++3000
++1800
++6300
++6300
++6300
++6300
++6300
++6300
++6300
++6300
++6300
++3E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char218
++ENCODING 218
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0600
++0C00
++6300
++6300
++6300
++6300
++6300
++6300
++6300
++6300
++6300
++3E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char219
++ENCODING 219
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++1C00
++1400
++6300
++6300
++6300
++6300
++6300
++6300
++6300
++6300
++6300
++3E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char220
++ENCODING 220
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++6300
++0000
++6300
++6300
++6300
++6300
++6300
++6300
++6300
++6300
++6300
++3E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char221
++ENCODING 221
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++1800
++3000
++C300
++C300
++C300
++6600
++3C00
++1800
++1800
++1800
++1800
++3C00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char222
++ENCODING 222
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++7800
++3000
++3E00
++3300
++3300
++3300
++3E00
++3000
++3000
++3000
++3000
++7800
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char223
++ENCODING 223
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++1C00
++3600
++6300
++6700
++6E00
++6C00
++6600
++6300
++6B00
++6E00
++6000
++4000
++0000
++0000
++ENDCHAR
++STARTCHAR char224
++ENCODING 224
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++3000
++1800
++0C00
++0000
++3C00
++0600
++3E00
++6600
++6600
++6600
++3B00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char225
++ENCODING 225
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0C00
++1800
++3000
++0000
++3C00
++0600
++3E00
++6600
++6600
++6600
++3B00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char226
++ENCODING 226
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0800
++1C00
++3600
++0000
++3C00
++0600
++3E00
++6600
++6600
++6600
++3B00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char227
++ENCODING 227
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++3B00
++6E00
++0000
++3C00
++0600
++3E00
++6600
++6600
++6600
++3B00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char228
++ENCODING 228
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++6600
++0000
++0000
++3C00
++0600
++3E00
++6600
++6600
++6600
++3B00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char229
++ENCODING 229
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++1C00
++3600
++1C00
++0000
++3C00
++0600
++3E00
++6600
++6600
++6600
++3B00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char230
++ENCODING 230
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++6E00
++3B00
++1B00
++7E00
++D800
++DC00
++7700
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char231
++ENCODING 231
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++3E00
++6300
++6000
++6000
++6000
++6300
++3E00
++0C00
++0600
++3C00
++0000
++ENDCHAR
++STARTCHAR char232
++ENCODING 232
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++3000
++1800
++0C00
++0000
++3E00
++6300
++7F00
++6000
++6000
++6300
++3E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char233
++ENCODING 233
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0600
++0C00
++1800
++0000
++3E00
++6300
++7F00
++6000
++6000
++6300
++3E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char234
++ENCODING 234
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0800
++1C00
++3600
++0000
++3E00
++6300
++7F00
++6000
++6000
++6300
++3E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char235
++ENCODING 235
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++6300
++0000
++0000
++3E00
++6300
++7F00
++6000
++6000
++6300
++3E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char236
++ENCODING 236
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++6000
++3000
++1800
++0000
++3800
++1800
++1800
++1800
++1800
++1800
++3C00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char237
++ENCODING 237
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0600
++0C00
++1800
++0000
++3800
++1800
++1800
++1800
++1800
++1800
++3C00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char238
++ENCODING 238
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++1800
++3C00
++6600
++0000
++3800
++1800
++1800
++1800
++1800
++1800
++3C00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char239
++ENCODING 239
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++6600
++0000
++0000
++3800
++1800
++1800
++1800
++1800
++1800
++3C00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char100
++ENCODING 240
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0E00
++0600
++0F00
++0600
++3E00
++6600
++6600
++6600
++6600
++3B00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char241
++ENCODING 241
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++3B00
++6E00
++0000
++6E00
++3300
++3300
++3300
++3300
++3300
++3300
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char242
++ENCODING 242
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++3000
++1800
++0C00
++0000
++3E00
++6300
++6300
++6300
++6300
++6300
++3E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char243
++ENCODING 243
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0C00
++1800
++3000
++0000
++3E00
++6300
++6300
++6300
++6300
++6300
++3E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char244
++ENCODING 244
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0800
++1C00
++3600
++0000
++3E00
++6300
++6300
++6300
++6300
++6300
++3E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char245
++ENCODING 245
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++3B00
++6E00
++0000
++3E00
++6300
++6300
++6300
++6300
++6300
++3E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char246
++ENCODING 246
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++6300
++0000
++0000
++3E00
++6300
++6300
++6300
++6300
++6300
++3E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char247
++ENCODING 247
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++1800
++1800
++0000
++7E00
++0000
++1800
++1800
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char248
++ENCODING 248
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0100
++0300
++3E00
++6700
++6F00
++6B00
++7B00
++7300
++3E00
++6000
++4000
++0000
++0000
++ENDCHAR
++STARTCHAR char249
++ENCODING 249
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++3000
++1800
++0C00
++0000
++6600
++6600
++6600
++6600
++6600
++6600
++3B00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char250
++ENCODING 250
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0C00
++1800
++3000
++0000
++6600
++6600
++6600
++6600
++6600
++6600
++3B00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char251
++ENCODING 251
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++1800
++3C00
++6600
++0000
++6600
++6600
++6600
++6600
++6600
++6600
++3B00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char252
++ENCODING 252
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++6600
++0000
++0000
++6600
++6600
++6600
++6600
++6600
++6600
++3B00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char253
++ENCODING 253
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0C00
++1800
++3000
++0000
++6300
++6300
++6300
++6300
++6300
++6300
++3F00
++0300
++0600
++7C00
++0000
++ENDCHAR
++STARTCHAR char254
++ENCODING 254
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++7800
++3000
++3E00
++3300
++3300
++3300
++3300
++3300
++3E00
++3000
++3000
++7800
++0000
++ENDCHAR
++STARTCHAR char255
++ENCODING 255
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++6300
++0000
++0000
++6300
++6300
++6300
++6300
++6300
++6300
++3F00
++0300
++0600
++7C00
++0000
++ENDCHAR
++ENDFONT
+diff -r af23d23c278b util/alevt/vtxt-latin-2.bdf
+--- /dev/null Thu Jan 01 00:00:00 1970 +0000
++++ b/util/alevt/vtxt-latin-2.bdf Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,5906 @@
++STARTFONT 2.1
++FONT -alevt-teletext-medium-r-normal--16-1-75-75-c-90-fontspecific-2
++SIZE 1 75 75
++FONTBOUNDINGBOX 9 16 0 -4
++STARTPROPERTIES 10
++POINT_SIZE 1
++PIXEL_SIZE 16
++RESOLUTION_X 75
++RESOLUTION_Y 75
++FONT_ASCENT 12
++FONT_DESCENT 4
++AVERAGE_WIDTH 90
++SPACING "C"
++_XMBDFED_INFO "Edited with xmbdfed 3.3."
++FONT "vtxt"
++ENDPROPERTIES
++CHARS 256
++STARTCHAR char0
++ENCODING 0
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char1
++ENCODING 1
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++F000
++F000
++F000
++F000
++F000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char2
++ENCODING 2
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0F80
++0F80
++0F80
++0F80
++0F80
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char1
++ENCODING 3
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++FF80
++FF80
++FF80
++FF80
++FF80
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char0
++ENCODING 4
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++F000
++F000
++F000
++F000
++F000
++F000
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char1
++ENCODING 5
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char2
++ENCODING 6
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0F80
++0F80
++0F80
++0F80
++0F80
++F000
++F000
++F000
++F000
++F000
++F000
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char1
++ENCODING 7
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++FF80
++FF80
++FF80
++FF80
++FF80
++F000
++F000
++F000
++F000
++F000
++F000
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char0
++ENCODING 8
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char1
++ENCODING 9
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++F000
++F000
++F000
++F000
++F000
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char2
++ENCODING 10
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char1
++ENCODING 11
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++FF80
++FF80
++FF80
++FF80
++FF80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char0
++ENCODING 12
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char1
++ENCODING 13
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++F000
++F000
++F000
++F000
++F000
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char2
++ENCODING 14
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0F80
++0F80
++0F80
++0F80
++0F80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char1
++ENCODING 15
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char0
++ENCODING 16
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++F000
++F000
++F000
++F000
++F000
++ENDCHAR
++STARTCHAR char1
++ENCODING 17
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++F000
++F000
++F000
++F000
++F000
++0000
++0000
++0000
++0000
++0000
++0000
++F000
++F000
++F000
++F000
++F000
++ENDCHAR
++STARTCHAR char2
++ENCODING 18
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0F80
++0F80
++0F80
++0F80
++0F80
++0000
++0000
++0000
++0000
++0000
++0000
++F000
++F000
++F000
++F000
++F000
++ENDCHAR
++STARTCHAR char1
++ENCODING 19
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++FF80
++FF80
++FF80
++FF80
++FF80
++0000
++0000
++0000
++0000
++0000
++0000
++F000
++F000
++F000
++F000
++F000
++ENDCHAR
++STARTCHAR char0
++ENCODING 20
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++ENDCHAR
++STARTCHAR char1
++ENCODING 21
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++ENDCHAR
++STARTCHAR char2
++ENCODING 22
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0F80
++0F80
++0F80
++0F80
++0F80
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++ENDCHAR
++STARTCHAR char1
++ENCODING 23
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++FF80
++FF80
++FF80
++FF80
++FF80
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++ENDCHAR
++STARTCHAR char0
++ENCODING 24
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++F000
++F000
++F000
++F000
++F000
++ENDCHAR
++STARTCHAR char1
++ENCODING 25
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++F000
++F000
++F000
++F000
++F000
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++F000
++F000
++F000
++F000
++F000
++ENDCHAR
++STARTCHAR char2
++ENCODING 26
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++F000
++F000
++F000
++F000
++F000
++ENDCHAR
++STARTCHAR char1
++ENCODING 27
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++FF80
++FF80
++FF80
++FF80
++FF80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++F000
++F000
++F000
++F000
++F000
++ENDCHAR
++STARTCHAR char0
++ENCODING 28
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++F000
++F000
++F000
++F000
++F000
++ENDCHAR
++STARTCHAR char1
++ENCODING 29
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++F000
++F000
++F000
++F000
++F000
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++F000
++F000
++F000
++F000
++F000
++ENDCHAR
++STARTCHAR char2
++ENCODING 30
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0F80
++0F80
++0F80
++0F80
++0F80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++F000
++F000
++F000
++F000
++F000
++ENDCHAR
++STARTCHAR char1
++ENCODING 31
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++F000
++F000
++F000
++F000
++F000
++ENDCHAR
++STARTCHAR char32
++ENCODING 32
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char33
++ENCODING 33
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++1800
++3C00
++3C00
++3C00
++1800
++1800
++1800
++0000
++1800
++1800
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char34
++ENCODING 34
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++6600
++6600
++6600
++2400
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char35
++ENCODING 35
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++3600
++3600
++7F00
++3600
++3600
++3600
++7F00
++3600
++3600
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char36
++ENCODING 36
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0C00
++0C00
++3E00
++6300
++6100
++6000
++3E00
++0300
++0300
++4300
++6300
++3E00
++0C00
++0C00
++0000
++0000
++ENDCHAR
++STARTCHAR char37
++ENCODING 37
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++6100
++6300
++0600
++0C00
++1800
++3000
++6300
++4300
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char38
++ENCODING 38
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++1C00
++3600
++3600
++1C00
++3B00
++6E00
++6600
++6600
++6600
++3B00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char39
++ENCODING 39
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++3000
++3000
++3000
++6000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char40
++ENCODING 40
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0C00
++1800
++3000
++3000
++3000
++3000
++3000
++3000
++1800
++0C00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char41
++ENCODING 41
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++3000
++1800
++0C00
++0C00
++0C00
++0C00
++0C00
++0C00
++1800
++3000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char42
++ENCODING 42
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++6600
++3C00
++FF00
++3C00
++6600
++0000
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char43
++ENCODING 43
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++1800
++1800
++7E00
++1800
++1800
++0000
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char44
++ENCODING 44
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++1800
++1800
++1800
++3000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char45
++ENCODING 45
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++7F00
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char46
++ENCODING 46
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++1800
++1800
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char47
++ENCODING 47
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0100
++0300
++0600
++0C00
++1800
++3000
++6000
++4000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char48
++ENCODING 48
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++3C00
++6600
++C300
++C300
++DB00
++DB00
++C300
++C300
++6600
++3C00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char49
++ENCODING 49
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++1800
++3800
++7800
++1800
++1800
++1800
++1800
++1800
++1800
++7E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char50
++ENCODING 50
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++3E00
++6300
++0300
++0600
++0C00
++1800
++3000
++6000
++6300
++7F00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char51
++ENCODING 51
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++3E00
++6300
++0300
++0300
++1E00
++0300
++0300
++0300
++6300
++3E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char52
++ENCODING 52
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0600
++0E00
++1E00
++3600
++6600
++7F00
++0600
++0600
++0600
++0F00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char53
++ENCODING 53
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++7F00
++6000
++6000
++6000
++7E00
++0300
++0300
++0300
++6300
++3E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char54
++ENCODING 54
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++1C00
++3000
++6000
++6000
++7E00
++6300
++6300
++6300
++6300
++3E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char55
++ENCODING 55
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++7F00
++6300
++0300
++0300
++0600
++0C00
++1800
++1800
++1800
++1800
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char56
++ENCODING 56
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++3E00
++6300
++6300
++6300
++3E00
++6300
++6300
++6300
++6300
++3E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char57
++ENCODING 57
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++3E00
++6300
++6300
++6300
++3F00
++0300
++0300
++0300
++0600
++3C00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char58
++ENCODING 58
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++1800
++1800
++0000
++0000
++0000
++1800
++1800
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char59
++ENCODING 59
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++1800
++1800
++0000
++0000
++0000
++1800
++1800
++1800
++3000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char60
++ENCODING 60
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0600
++0C00
++1800
++3000
++6000
++3000
++1800
++0C00
++0600
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char61
++ENCODING 61
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++7E00
++0000
++0000
++7E00
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char62
++ENCODING 62
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++6000
++3000
++1800
++0C00
++0600
++0C00
++1800
++3000
++6000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char63
++ENCODING 63
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++3E00
++6300
++6300
++0600
++0C00
++0C00
++0C00
++0000
++0C00
++0C00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char64
++ENCODING 64
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++3E00
++6300
++6300
++6F00
++6F00
++6F00
++6E00
++6000
++3E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char65
++ENCODING 65
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0800
++1C00
++3600
++6300
++6300
++7F00
++6300
++6300
++6300
++6300
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char66
++ENCODING 66
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++7E00
++3300
++3300
++3300
++3E00
++3300
++3300
++3300
++3300
++7E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char67
++ENCODING 67
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++1E00
++3300
++6100
++6000
++6000
++6000
++6000
++6100
++3300
++1E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char68
++ENCODING 68
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++7C00
++3600
++3300
++3300
++3300
++3300
++3300
++3300
++3600
++7C00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char69
++ENCODING 69
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++7F00
++3300
++3100
++3400
++3C00
++3400
++3000
++3100
++3300
++7F00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char70
++ENCODING 70
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++7F00
++3300
++3100
++3400
++3C00
++3400
++3000
++3000
++3000
++7800
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char71
++ENCODING 71
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++1E00
++3300
++6100
++6000
++6000
++6F00
++6300
++6300
++3300
++1D00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char72
++ENCODING 72
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++6300
++6300
++6300
++6300
++7F00
++6300
++6300
++6300
++6300
++6300
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char73
++ENCODING 73
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++3C00
++1800
++1800
++1800
++1800
++1800
++1800
++1800
++1800
++3C00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char74
++ENCODING 74
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0F00
++0600
++0600
++0600
++0600
++0600
++6600
++6600
++6600
++3C00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char75
++ENCODING 75
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++7300
++3300
++3300
++3600
++3C00
++3C00
++3600
++3300
++3300
++7300
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char76
++ENCODING 76
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++7800
++3000
++3000
++3000
++3000
++3000
++3000
++3100
++3300
++7F00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char77
++ENCODING 77
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++C300
++E700
++FF00
++FF00
++DB00
++C300
++C300
++C300
++C300
++C300
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char78
++ENCODING 78
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++6300
++7300
++7B00
++7F00
++6F00
++6700
++6300
++6300
++6300
++6300
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char79
++ENCODING 79
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++3E00
++6300
++6300
++6300
++6300
++6300
++6300
++6300
++6300
++3E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char80
++ENCODING 80
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++7E00
++3300
++3300
++3300
++3E00
++3000
++3000
++3000
++3000
++7800
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char81
++ENCODING 81
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++3E00
++6300
++6300
++6300
++6300
++6300
++6300
++6B00
++6F00
++3E00
++0600
++0700
++0000
++0000
++ENDCHAR
++STARTCHAR char82
++ENCODING 82
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++7E00
++3300
++3300
++3300
++3E00
++3600
++3300
++3300
++3300
++7300
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char83
++ENCODING 83
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++3E00
++6300
++6300
++3000
++1C00
++0600
++0300
++6300
++6300
++3E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char84
++ENCODING 84
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++FF00
++DB00
++9900
++1800
++1800
++1800
++1800
++1800
++1800
++3C00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char85
++ENCODING 85
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++6300
++6300
++6300
++6300
++6300
++6300
++6300
++6300
++6300
++3E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char86
++ENCODING 86
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++C300
++C300
++C300
++C300
++C300
++C300
++C300
++6600
++3C00
++1800
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char87
++ENCODING 87
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++C300
++C300
++C300
++C300
++C300
++DB00
++DB00
++FF00
++6600
++6600
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char88
++ENCODING 88
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++C300
++C300
++6600
++3C00
++1800
++1800
++3C00
++6600
++C300
++C300
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char89
++ENCODING 89
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++C300
++C300
++C300
++6600
++3C00
++1800
++1800
++1800
++1800
++3C00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char90
++ENCODING 90
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++FF00
++C300
++8600
++0C00
++1800
++3000
++6000
++C100
++C300
++FF00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char91
++ENCODING 91
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++3C00
++3000
++3000
++3000
++3000
++3000
++3000
++3000
++3000
++3C00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char92
++ENCODING 92
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++4000
++6000
++7000
++3800
++1C00
++0E00
++0700
++0300
++0100
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char93
++ENCODING 93
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++3C00
++0C00
++0C00
++0C00
++0C00
++0C00
++0C00
++0C00
++0C00
++3C00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char94
++ENCODING 94
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0800
++1C00
++3600
++6300
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char95
++ENCODING 95
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++FF80
++0000
++0000
++ENDCHAR
++STARTCHAR char96
++ENCODING 96
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++3000
++3000
++1800
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char97
++ENCODING 97
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++3C00
++0600
++3E00
++6600
++6600
++6600
++3B00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char98
++ENCODING 98
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++7000
++3000
++3000
++3C00
++3600
++3300
++3300
++3300
++3300
++3E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char99
++ENCODING 99
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++3E00
++6300
++6000
++6000
++6000
++6300
++3E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char100
++ENCODING 100
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0E00
++0600
++0600
++1E00
++3600
++6600
++6600
++6600
++6600
++3B00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char101
++ENCODING 101
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++3E00
++6300
++7F00
++6000
++6000
++6300
++3E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char102
++ENCODING 102
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++1C00
++3600
++3200
++3000
++7800
++3000
++3000
++3000
++3000
++7800
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char103
++ENCODING 103
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++3B00
++6600
++6600
++6600
++6600
++6600
++3E00
++0600
++6600
++3C00
++0000
++ENDCHAR
++STARTCHAR char104
++ENCODING 104
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++7000
++3000
++3000
++3600
++3B00
++3300
++3300
++3300
++3300
++7300
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char105
++ENCODING 105
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++1800
++1800
++0000
++3800
++1800
++1800
++1800
++1800
++1800
++3C00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char106
++ENCODING 106
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0600
++0600
++0000
++0E00
++0600
++0600
++0600
++0600
++0600
++0600
++6600
++6600
++3C00
++0000
++ENDCHAR
++STARTCHAR char107
++ENCODING 107
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++7000
++3000
++3000
++3300
++3600
++3C00
++3C00
++3600
++3300
++7300
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char108
++ENCODING 108
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++3800
++1800
++1800
++1800
++1800
++1800
++1800
++1800
++1800
++3C00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char109
++ENCODING 109
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++E600
++FF00
++DB00
++DB00
++DB00
++DB00
++DB00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char110
++ENCODING 110
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++6E00
++3300
++3300
++3300
++3300
++3300
++3300
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char111
++ENCODING 111
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++3E00
++6300
++6300
++6300
++6300
++6300
++3E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char112
++ENCODING 112
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++6E00
++3300
++3300
++3300
++3300
++3300
++3E00
++3000
++3000
++7800
++0000
++ENDCHAR
++STARTCHAR char113
++ENCODING 113
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++3B00
++6600
++6600
++6600
++6600
++6600
++3E00
++0600
++0600
++0F00
++0000
++ENDCHAR
++STARTCHAR char114
++ENCODING 114
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++6E00
++3B00
++3300
++3000
++3000
++3000
++7800
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char115
++ENCODING 115
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++3E00
++6300
++3000
++1C00
++0600
++6300
++3E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char116
++ENCODING 116
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0800
++1800
++1800
++7E00
++1800
++1800
++1800
++1800
++1B00
++0E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char117
++ENCODING 117
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++6600
++6600
++6600
++6600
++6600
++6600
++3B00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char118
++ENCODING 118
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++C300
++C300
++C300
++C300
++6600
++3C00
++1800
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char119
++ENCODING 119
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++C300
++C300
++C300
++DB00
++DB00
++FF00
++6600
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char120
++ENCODING 120
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++C300
++6600
++3C00
++1800
++3C00
++6600
++C300
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char121
++ENCODING 121
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++6300
++6300
++6300
++6300
++6300
++6300
++3F00
++0300
++0600
++7C00
++0000
++ENDCHAR
++STARTCHAR char122
++ENCODING 122
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++7F00
++6600
++0C00
++1800
++3000
++6300
++7F00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char123
++ENCODING 123
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0E00
++1800
++1800
++1800
++7000
++1800
++1800
++1800
++1800
++0E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char124
++ENCODING 124
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++1800
++1800
++1800
++1800
++1800
++1800
++1800
++1800
++1800
++1800
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char125
++ENCODING 125
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++7000
++1800
++1800
++1800
++0E00
++1800
++1800
++1800
++1800
++7000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char126
++ENCODING 126
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++3B00
++6E00
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char127
++ENCODING 127
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++7F00
++7F00
++7F00
++7F00
++7F00
++7F00
++7F00
++7F00
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char0
++ENCODING 128
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0F80
++0F80
++0F80
++0F80
++0F80
++ENDCHAR
++STARTCHAR char1
++ENCODING 129
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++F000
++F000
++F000
++F000
++F000
++0000
++0000
++0000
++0000
++0000
++0000
++0F80
++0F80
++0F80
++0F80
++0F80
++ENDCHAR
++STARTCHAR char2
++ENCODING 130
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0F80
++0F80
++0F80
++0F80
++0F80
++0000
++0000
++0000
++0000
++0000
++0000
++0F80
++0F80
++0F80
++0F80
++0F80
++ENDCHAR
++STARTCHAR char1
++ENCODING 131
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++FF80
++FF80
++FF80
++FF80
++FF80
++0000
++0000
++0000
++0000
++0000
++0000
++0F80
++0F80
++0F80
++0F80
++0F80
++ENDCHAR
++STARTCHAR char0
++ENCODING 132
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++F000
++F000
++F000
++F000
++F000
++F000
++0F80
++0F80
++0F80
++0F80
++0F80
++ENDCHAR
++STARTCHAR char1
++ENCODING 133
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++0F80
++0F80
++0F80
++0F80
++0F80
++ENDCHAR
++STARTCHAR char2
++ENCODING 134
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0F80
++0F80
++0F80
++0F80
++0F80
++F000
++F000
++F000
++F000
++F000
++F000
++0F80
++0F80
++0F80
++0F80
++0F80
++ENDCHAR
++STARTCHAR char1
++ENCODING 135
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++FF80
++FF80
++FF80
++FF80
++FF80
++F000
++F000
++F000
++F000
++F000
++F000
++0F80
++0F80
++0F80
++0F80
++0F80
++ENDCHAR
++STARTCHAR char0
++ENCODING 136
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++ENDCHAR
++STARTCHAR char1
++ENCODING 137
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++F000
++F000
++F000
++F000
++F000
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++ENDCHAR
++STARTCHAR char2
++ENCODING 138
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++ENDCHAR
++STARTCHAR char1
++ENCODING 139
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++FF80
++FF80
++FF80
++FF80
++FF80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++ENDCHAR
++STARTCHAR char0
++ENCODING 140
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++0F80
++0F80
++0F80
++0F80
++0F80
++ENDCHAR
++STARTCHAR char1
++ENCODING 141
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++F000
++F000
++F000
++F000
++F000
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++0F80
++0F80
++0F80
++0F80
++0F80
++ENDCHAR
++STARTCHAR char2
++ENCODING 142
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0F80
++0F80
++0F80
++0F80
++0F80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++0F80
++0F80
++0F80
++0F80
++0F80
++ENDCHAR
++STARTCHAR char1
++ENCODING 143
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++0F80
++0F80
++0F80
++0F80
++0F80
++ENDCHAR
++STARTCHAR char0
++ENCODING 144
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++FF80
++FF80
++FF80
++FF80
++FF80
++ENDCHAR
++STARTCHAR char1
++ENCODING 145
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++F000
++F000
++F000
++F000
++F000
++0000
++0000
++0000
++0000
++0000
++0000
++FF80
++FF80
++FF80
++FF80
++FF80
++ENDCHAR
++STARTCHAR char2
++ENCODING 146
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0F80
++0F80
++0F80
++0F80
++0F80
++0000
++0000
++0000
++0000
++0000
++0000
++FF80
++FF80
++FF80
++FF80
++FF80
++ENDCHAR
++STARTCHAR char1
++ENCODING 147
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++FF80
++FF80
++FF80
++FF80
++FF80
++0000
++0000
++0000
++0000
++0000
++0000
++FF80
++FF80
++FF80
++FF80
++FF80
++ENDCHAR
++STARTCHAR char0
++ENCODING 148
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++F000
++F000
++F000
++F000
++F000
++F000
++FF80
++FF80
++FF80
++FF80
++FF80
++ENDCHAR
++STARTCHAR char1
++ENCODING 149
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++F000
++FF80
++FF80
++FF80
++FF80
++FF80
++ENDCHAR
++STARTCHAR char2
++ENCODING 150
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0F80
++0F80
++0F80
++0F80
++0F80
++F000
++F000
++F000
++F000
++F000
++F000
++FF80
++FF80
++FF80
++FF80
++FF80
++ENDCHAR
++STARTCHAR char1
++ENCODING 151
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++FF80
++FF80
++FF80
++FF80
++FF80
++F000
++F000
++F000
++F000
++F000
++F000
++FF80
++FF80
++FF80
++FF80
++FF80
++ENDCHAR
++STARTCHAR char0
++ENCODING 152
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++FF80
++FF80
++FF80
++FF80
++FF80
++ENDCHAR
++STARTCHAR char1
++ENCODING 153
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++F000
++F000
++F000
++F000
++F000
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++FF80
++FF80
++FF80
++FF80
++FF80
++ENDCHAR
++STARTCHAR char2
++ENCODING 154
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++FF80
++FF80
++FF80
++FF80
++FF80
++ENDCHAR
++STARTCHAR char1
++ENCODING 155
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++FF80
++FF80
++FF80
++FF80
++FF80
++0F80
++0F80
++0F80
++0F80
++0F80
++0F80
++FF80
++FF80
++FF80
++FF80
++FF80
++ENDCHAR
++STARTCHAR char0
++ENCODING 156
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++ENDCHAR
++STARTCHAR char1
++ENCODING 157
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++F000
++F000
++F000
++F000
++F000
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++ENDCHAR
++STARTCHAR char2
++ENCODING 158
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0F80
++0F80
++0F80
++0F80
++0F80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++ENDCHAR
++STARTCHAR char1
++ENCODING 159
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++FF80
++ENDCHAR
++STARTCHAR char160
++ENCODING 160
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++FF80
++0880
++0880
++0880
++0880
++FF80
++0880
++0880
++0880
++0880
++0880
++FF80
++0880
++0880
++0880
++0880
++ENDCHAR
++STARTCHAR char65
++ENCODING 161
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0800
++1C00
++3600
++6300
++6300
++7F00
++6300
++6300
++6300
++6300
++0600
++0300
++0000
++0000
++ENDCHAR
++STARTCHAR char162
++ENCODING 162
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++6600
++3C00
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char76
++ENCODING 163
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++7800
++3000
++3000
++3C00
++3800
++3000
++7000
++F100
++3300
++7F00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char164
++ENCODING 164
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++4100
++6300
++3E00
++6300
++6300
++6300
++6300
++3E00
++6300
++4100
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char76
++ENCODING 165
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++7B00
++3300
++3600
++3000
++3000
++3000
++3000
++3100
++3300
++7F00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char83
++ENCODING 166
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0C00
++1800
++3E00
++6300
++6300
++3000
++1C00
++0600
++0300
++6300
++6300
++3E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char167
++ENCODING 167
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++3E00
++6300
++3000
++1C00
++3600
++6300
++6300
++3600
++1C00
++0600
++6300
++3E00
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char196
++ENCODING 168
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++6300
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char169
++ENCODING 169
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++6600
++3C00
++3E00
++6300
++6300
++3000
++1C00
++0600
++0300
++6300
++6300
++3E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char83
++ENCODING 170
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++3E00
++6300
++6300
++3000
++1C00
++0600
++0300
++6300
++6300
++3E00
++0600
++0300
++3E00
++0000
++ENDCHAR
++STARTCHAR char171
++ENCODING 171
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++6600
++3C00
++FF00
++DB00
++9900
++1800
++1800
++1800
++1800
++1800
++1800
++3C00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char90
++ENCODING 172
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0C00
++1800
++FF00
++C300
++8600
++0C00
++1800
++3000
++6000
++C100
++C300
++FF00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char173
++ENCODING 173
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++FF80
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char174
++ENCODING 174
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++6600
++3C00
++FF00
++C300
++8600
++0C00
++1800
++3000
++6000
++C100
++C300
++FF00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char90
++ENCODING 175
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++FF00
++C300
++8600
++0C00
++7E00
++3000
++6000
++C100
++C300
++FF00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char176
++ENCODING 176
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++1C00
++3600
++3600
++1C00
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char97
++ENCODING 177
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++3C00
++0600
++3E00
++6600
++6600
++6600
++3B00
++0600
++0300
++0000
++0000
++ENDCHAR
++STARTCHAR char97
++ENCODING 178
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0C00
++1800
++0E00
++0000
++0000
++ENDCHAR
++STARTCHAR char108
++ENCODING 179
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++3800
++1800
++1E00
++1C00
++1800
++3800
++7800
++1800
++1800
++3C00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char180
++ENCODING 180
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++1800
++3000
++6000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char108
++ENCODING 181
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++3980
++1980
++1B00
++1800
++1800
++1800
++1800
++1800
++1800
++3C00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char115
++ENCODING 182
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0600
++0C00
++0000
++3E00
++6300
++3000
++1C00
++0600
++6300
++3E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char171
++ENCODING 183
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++6600
++3C00
++1800
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char184
++ENCODING 184
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0080
++0100
++0300
++0600
++0C00
++1C00
++3000
++7F00
++7700
++0E00
++1C00
++1800
++3000
++6000
++8000
++0000
++ENDCHAR
++STARTCHAR char185
++ENCODING 185
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++3600
++1C00
++3E00
++6300
++3000
++1C00
++0600
++6300
++3E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char115
++ENCODING 186
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++3E00
++6300
++3000
++1C00
++0600
++6300
++3E00
++0300
++1E00
++0000
++0000
++ENDCHAR
++STARTCHAR char187
++ENCODING 187
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0180
++0980
++1B00
++1800
++7E00
++1800
++1800
++1800
++1800
++1B00
++0E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char122
++ENCODING 188
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0600
++0C00
++0000
++7F00
++6600
++0C00
++1800
++3000
++6300
++7F00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char189
++ENCODING 189
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++3300
++6600
++CC00
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char190
++ENCODING 190
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++6600
++3C00
++7F00
++6600
++0C00
++1800
++3000
++6300
++7F00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char122
++ENCODING 191
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0C00
++0C00
++0000
++7F00
++6600
++0C00
++1800
++3000
++6300
++7F00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char82
++ENCODING 192
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0600
++0C00
++7E00
++3300
++3300
++3300
++3E00
++3600
++3300
++3300
++3300
++7300
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char193
++ENCODING 193
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0300
++0600
++0000
++1C00
++3600
++6300
++6300
++7F00
++6300
++6300
++6300
++6300
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char194
++ENCODING 194
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++1C00
++3600
++0800
++1C00
++3600
++6300
++6300
++7F00
++6300
++6300
++6300
++6300
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char195
++ENCODING 195
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++6300
++3E00
++0000
++1C00
++3600
++6300
++6300
++7F00
++6300
++6300
++6300
++6300
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char196
++ENCODING 196
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++6300
++0000
++0800
++1C00
++3600
++6300
++6300
++7F00
++6300
++6300
++6300
++6300
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char76
++ENCODING 197
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0C00
++1800
++7C00
++3000
++3000
++3000
++3000
++3000
++3000
++3100
++3300
++7F00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char67
++ENCODING 198
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0600
++0C00
++1E00
++3300
++6100
++6000
++6000
++6000
++6000
++6100
++3300
++1E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char199
++ENCODING 199
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++1E00
++3300
++6100
++6000
++6000
++6000
++6100
++3300
++1E00
++0600
++0300
++3E00
++0000
++ENDCHAR
++STARTCHAR char200
++ENCODING 200
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++3300
++1E00
++1E00
++3300
++6100
++6000
++6000
++6000
++6000
++6100
++3300
++1E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char201
++ENCODING 201
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0C00
++1800
++7F00
++3300
++3100
++3400
++3C00
++3400
++3000
++3100
++3300
++7F00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char202
++ENCODING 202
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++7F00
++3300
++3100
++3400
++3C00
++3400
++3000
++3100
++3300
++7F00
++0C00
++0600
++0000
++0000
++ENDCHAR
++STARTCHAR char203
++ENCODING 203
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++6300
++0000
++7F00
++3300
++3100
++3400
++3C00
++3400
++3000
++3100
++3300
++7F00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char204
++ENCODING 204
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++3300
++1E00
++7F00
++3300
++3100
++3400
++3C00
++3400
++3000
++3100
++3300
++7F00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char205
++ENCODING 205
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0C00
++1800
++0000
++3C00
++1800
++1800
++1800
++1800
++1800
++1800
++1800
++3C00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char206
++ENCODING 206
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++3C00
++6600
++0000
++3C00
++1800
++1800
++1800
++1800
++1800
++1800
++1800
++3C00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char207
++ENCODING 207
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++6600
++3C00
++7C00
++3600
++3300
++3300
++3300
++3300
++3300
++3300
++3600
++7C00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char208
++ENCODING 208
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++3C00
++3600
++3300
++3300
++7B00
++7B00
++3300
++3300
++3600
++3C00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char78
++ENCODING 209
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0C00
++1800
++6300
++7300
++7B00
++7F00
++6F00
++6700
++6300
++6300
++6300
++6300
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char210
++ENCODING 210
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++6600
++3C00
++6300
++7300
++7B00
++7F00
++6F00
++6700
++6300
++6300
++6300
++6300
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char211
++ENCODING 211
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0600
++0C00
++3E00
++6300
++6300
++6300
++6300
++6300
++6300
++6300
++6300
++3E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char212
++ENCODING 212
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++1C00
++3600
++3E00
++6300
++6300
++6300
++6300
++6300
++6300
++6300
++6300
++3E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char213
++ENCODING 213
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++3300
++6600
++3E00
++6300
++6300
++6300
++6300
++6300
++6300
++6300
++6300
++3E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char214
++ENCODING 214
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++6300
++0000
++3E00
++6300
++6300
++6300
++6300
++6300
++6300
++6300
++6300
++3E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char215
++ENCODING 215
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++6300
++3600
++1C00
++0800
++1C00
++3600
++6300
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char216
++ENCODING 216
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++6600
++3C00
++7E00
++3300
++3300
++3300
++3E00
++3600
++3300
++3300
++3300
++7300
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char217
++ENCODING 217
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0800
++1400
++6B00
++6300
++6300
++6300
++6300
++6300
++6300
++6300
++6300
++3E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char218
++ENCODING 218
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0600
++0C00
++6300
++6300
++6300
++6300
++6300
++6300
++6300
++6300
++6300
++3E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char219
++ENCODING 219
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++1B00
++3600
++6300
++6300
++6300
++6300
++6300
++6300
++6300
++6300
++6300
++3E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char220
++ENCODING 220
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++6300
++0000
++6300
++6300
++6300
++6300
++6300
++6300
++6300
++6300
++6300
++3E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char221
++ENCODING 221
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++1800
++3000
++C300
++C300
++C300
++6600
++3C00
++1800
++1800
++1800
++1800
++3C00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char84
++ENCODING 222
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++FF00
++DB00
++9900
++1800
++1800
++1800
++1800
++1800
++1800
++3C00
++0600
++3C00
++0000
++0000
++ENDCHAR
++STARTCHAR char223
++ENCODING 223
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++1C00
++3600
++6300
++6700
++6E00
++6C00
++6600
++6300
++6B00
++6E00
++6000
++4000
++0000
++0000
++ENDCHAR
++STARTCHAR char224
++ENCODING 224
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0C00
++1800
++6E00
++3B00
++3300
++3000
++3000
++3000
++7800
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char225
++ENCODING 225
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0C00
++1800
++3000
++0000
++3C00
++0600
++3E00
++6600
++6600
++6600
++3B00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char226
++ENCODING 226
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0800
++1C00
++3600
++0000
++3C00
++0600
++3E00
++6600
++6600
++6600
++3B00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char227
++ENCODING 227
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++6600
++3C00
++0000
++3C00
++0600
++3E00
++6600
++6600
++6600
++3B00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char228
++ENCODING 228
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++6600
++0000
++0000
++3C00
++0600
++3E00
++6600
++6600
++6600
++3B00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char108
++ENCODING 229
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0C00
++1800
++0000
++3800
++1800
++1800
++1800
++1800
++1800
++1800
++1800
++3C00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char99
++ENCODING 230
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0600
++0C00
++0000
++3E00
++6300
++6000
++6000
++6000
++6300
++3E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char231
++ENCODING 231
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++3E00
++6300
++6000
++6000
++6000
++6300
++3E00
++0C00
++0600
++3C00
++0000
++ENDCHAR
++STARTCHAR char232
++ENCODING 232
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++6600
++3C00
++3E00
++6300
++6000
++6000
++6000
++6300
++3E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char233
++ENCODING 233
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0600
++0C00
++1800
++0000
++3E00
++6300
++7F00
++6000
++6000
++6300
++3E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char234
++ENCODING 234
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++0000
++3E00
++6300
++7F00
++6000
++6000
++6300
++3E00
++1800
++0E00
++0000
++0000
++ENDCHAR
++STARTCHAR char235
++ENCODING 235
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++6300
++0000
++0000
++3E00
++6300
++7F00
++6000
++6000
++6300
++3E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char236
++ENCODING 236
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++3300
++1E00
++3E00
++6300
++7F00
++6000
++6000
++6300
++3E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char237
++ENCODING 237
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0600
++0C00
++1800
++0000
++3800
++1800
++1800
++1800
++1800
++1800
++3C00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char238
++ENCODING 238
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++1800
++3C00
++6600
++0000
++3800
++1800
++1800
++1800
++1800
++1800
++3C00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char239
++ENCODING 239
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++6000
++6E00
++3600
++0600
++1E00
++3600
++6600
++6600
++6600
++6600
++3B00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char100
++ENCODING 240
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0E00
++0600
++0F00
++0600
++3E00
++6600
++6600
++6600
++6600
++3B00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char241
++ENCODING 241
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0600
++0C00
++0000
++6E00
++3300
++3300
++3300
++3300
++3300
++3300
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char242
++ENCODING 242
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++3300
++1E00
++6E00
++3300
++3300
++3300
++3300
++3300
++3300
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char243
++ENCODING 243
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0600
++0C00
++0000
++3E00
++6300
++6300
++6300
++6300
++6300
++3E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char244
++ENCODING 244
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0800
++1C00
++3600
++0000
++3E00
++6300
++6300
++6300
++6300
++6300
++3E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char245
++ENCODING 245
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++3300
++6600
++0000
++3E00
++6300
++6300
++6300
++6300
++6300
++3E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char246
++ENCODING 246
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++6300
++0000
++0000
++3E00
++6300
++6300
++6300
++6300
++6300
++3E00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char247
++ENCODING 247
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++0000
++1800
++1800
++0000
++7E00
++0000
++1800
++1800
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char248
++ENCODING 248
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0000
++3300
++1E00
++6E00
++3B00
++3300
++3000
++3000
++3000
++7800
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char249
++ENCODING 249
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++1800
++2400
++2400
++1800
++6600
++6600
++6600
++6600
++6600
++6600
++3B00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char250
++ENCODING 250
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0C00
++1800
++3000
++0000
++6600
++6600
++6600
++6600
++6600
++6600
++3B00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char251
++ENCODING 251
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++3300
++6600
++0000
++6600
++6600
++6600
++6600
++6600
++6600
++3B00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char252
++ENCODING 252
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++6600
++0000
++0000
++6600
++6600
++6600
++6600
++6600
++6600
++3B00
++0000
++0000
++0000
++0000
++ENDCHAR
++STARTCHAR char253
++ENCODING 253
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0C00
++1800
++3000
++0000
++6300
++6300
++6300
++6300
++6300
++6300
++3F00
++0300
++0600
++7C00
++0000
++ENDCHAR
++STARTCHAR char116
++ENCODING 254
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0000
++0800
++1800
++1800
++7E00
++1800
++1800
++1800
++1800
++1B00
++0E00
++0300
++1E00
++0000
++0000
++ENDCHAR
++STARTCHAR char255
++ENCODING 255
++SWIDTH 8640 0
++DWIDTH 9 0
++BBX 9 16 0 -4
++BITMAP
++0000
++0C00
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++0000
++ENDCHAR
++ENDFONT
+diff -r af23d23c278b util/alevt/xio.c
+--- /dev/null Thu Jan 01 00:00:00 1970 +0000
++++ b/util/alevt/xio.c Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,1156 @@
++#include <stdio.h>
++#include <unistd.h>
++#include <stdlib.h>
++#include <string.h>
++#include <fcntl.h>
++#include <signal.h>
++#include <X11/Xlib.h>
++#include <X11/Xutil.h>
++#include <X11/Xatom.h>
++#define XK_MISCELLANY
++#define XK_LATIN1
++#include <X11/keysymdef.h>
++#include <sys/time.h>
++#include "vt.h"
++#include "misc.h"
++#include "dllist.h"
++#include "xio.h"
++#include "fdset.h"
++#include "lang.h"
++#include "icon.xbm"
++#include "font.h"
++
++#define WW (W*CW) /* pixel width of window */
++#define WH (H*CH) /* pixel hegiht of window */
++#define NO_SEL 999 /* sel_y1 value if no selection */
++#define SEL_MIN_TIME 500 /* anything shorter is a click */
++
++static struct dl_head dpys[1]; /* list of all displays */
++static void xio_timer(void *data, int fd);
++static void handle_event(struct xio *xio, int fd);
++
++
++static int timer_init(int argc, char **argv)
++{
++ int p[2], timer_pid, i;
++
++ if (pipe(p) == -1)
++ return -1;
++
++ signal(SIGPIPE, SIG_DFL);
++ timer_pid = fork();
++ if (timer_pid == -1)
++ return -1;
++ if (timer_pid > 0)
++ {
++ fdset_add_fd(fds, p[0], xio_timer, 0);
++ close(p[1]);
++ return 0;
++ }
++
++ close(p[0]);
++ for (i = 0; i < 32; ++i)
++ if (p[1] != i)
++ close(i);
++ memcpy(argv[0], "Timer", 6);
++
++ for (;;)
++ {
++ usleep(300000);
++ write(p[1], "*", 1);
++ }
++}
++
++
++static int local_init(int argc, char **argv)
++{
++ static int inited = 0;
++
++ if (inited)
++ return 0;
++
++ if (timer_init(argc, argv) == -1)
++ return -1;
++
++ dl_init(dpys);
++
++ inited = 1;
++ return 0;
++}
++
++
++static int get_colors(struct xio *xio)
++{
++ int i;
++ XColor c;
++
++ static short rgb[][3] =
++ {
++ { 0x0000,0x0000,0x0000 },
++ { 0xffff,0x0000,0x0000 },
++ { 0x0000,0xffff,0x0000 },
++ { 0xffff,0xffff,0x0000 },
++ { 0x0000,0x0000,0xffff },
++ { 0xffff,0x0000,0xffff },
++ { 0x0000,0xffff,0xffff },
++ { 0xffff,0xffff,0xffff },
++ { 0x7fff,0x7fff,0x7fff },
++ { 0x7fff,0x0000,0x0000 },
++ { 0x0000,0x7fff,0x0000 },
++ { 0x7fff,0x7fff,0x0000 },
++ { 0x0000,0x0000,0x7fff },
++ { 0x7fff,0x0000,0x7fff },
++ { 0x0000,0x7fff,0x7fff },
++ { 0x3fff,0x3fff,0x3fff },
++ };
++
++ for (i = 0; i < 16; ++i)
++ {
++ c.red = rgb[i][0];
++ c.green = rgb[i][1];
++ c.blue = rgb[i][2];
++ if (XAllocColor(xio->dpy, xio->cmap, &c) == 0)
++ return -1;
++ xio->color[i] = c.pixel;
++ }
++ return 0;
++}
++
++
++static int get_fonts(struct xio *xio)
++{
++ GC gc;
++ int i;
++ unsigned char *font_bits;
++ switch(latin1) {
++ case LATIN1: font_bits=font1_bits; break;
++ case LATIN2: font_bits=font2_bits; break;
++ case KOI8: font_bits=font3_bits; break;
++ case GREEK: font_bits=font4_bits; break;
++ default: font_bits=font1_bits; break;
++ }
++
++ xio->font[0] = XCreateBitmapFromData(xio->dpy, xio->root,
++ font_bits, font_width, font_height);
++ xio->font[1] = XCreatePixmap(xio->dpy, xio->root,
++ font_width, font_height*2, 1);
++ gc = XCreateGC(xio->dpy, xio->font[0], 0, 0);
++ for (i = 0; i < font_height; ++i)
++ {
++ XCopyArea(xio->dpy, xio->font[0], xio->font[1], gc, 0, i,
++ font_width, 1, 0, i*2);
++ XCopyArea(xio->dpy, xio->font[0], xio->font[1], gc, 0, i,
++ font_width, 1, 0, i*2+1);
++ }
++ XFreeGC(xio->dpy, gc);
++ return 0;
++}
++
++
++static void xlib_conn_watch(Display *dpy, void *fds, int fd, int open_flag, void *data)
++{
++ if (open_flag)
++ fdset_add_fd(fds, fd, XProcessInternalConnection, dpy);
++ else
++ fdset_del_fd(fds, fd);
++}
++
++
++struct xio * xio_open_dpy(char *dpy, int argc, char **argv)
++{
++ XClassHint classhint[1];
++ struct xio *xio;
++
++ if (local_init(argc, argv) == -1)
++ goto fail1;
++
++ if (not(xio = malloc(sizeof(*xio))))
++ goto fail1;
++
++ if (not(xio->dpy = XOpenDisplay(dpy)))
++ goto fail2;
++
++ xio->fd = ConnectionNumber(xio->dpy);
++ xio->argc = argc;
++ xio->argv = argv;
++ dl_init(xio->windows);
++ xio->screen = DefaultScreen(xio->dpy);
++ xio->depth = DefaultDepth(xio->dpy, xio->screen);
++ xio->width = DisplayWidth(xio->dpy, xio->screen);
++ xio->height = DisplayHeight(xio->dpy, xio->screen);
++ xio->root = DefaultRootWindow(xio->dpy);
++ xio->cmap = DefaultColormap(xio->dpy, xio->screen);
++ xio->xa_del_win = XInternAtom(xio->dpy, "WM_DELETE_WINDOW", False);
++ xio->xa_targets = XInternAtom(xio->dpy, "TARGETS", False);
++ xio->xa_timestamp = XInternAtom(xio->dpy, "TIMESTAMP", False);
++ xio->xa_multiple = XInternAtom(xio->dpy, "MULTIPLE", False);
++ xio->xa_text = XInternAtom(xio->dpy, "TEXT", False);
++
++ if (get_colors(xio) == -1)
++ goto fail3;
++
++ if (get_fonts(xio) == -1)
++ goto fail3;
++
++ if (fdset_add_fd(fds, xio->fd, handle_event, xio) == -1)
++ goto fail3;
++
++ XAddConnectionWatch(xio->dpy, PTR xlib_conn_watch, PTR fds);
++
++ xio->icon = XCreateBitmapFromData(xio->dpy, xio->root,
++ icon_bits, icon_width, icon_height);
++
++ xio->group_leader = XCreateSimpleWindow(xio->dpy, xio->root,
++ 0, 0, 1, 1, 0, 0, 0);
++ XSetCommand(xio->dpy, xio->group_leader, xio->argv, xio->argc);
++ classhint->res_name = "VTLeader";
++ classhint->res_class = "AleVT";
++ XSetClassHint(xio->dpy, xio->group_leader, classhint);
++
++ dl_insert_first(dpys, xio->node);
++ return xio;
++
++fail4:
++ fdset_del_fd(fds, xio->fd);
++fail3:
++ XCloseDisplay(xio->dpy);
++fail2:
++ free(xio);
++fail1:
++ return 0;
++}
++
++
++static void set_user_geometry(struct xio_win *xw, char *geom, XSizeHints *sh, int bwidth)
++{
++ static int gravs[] = { NorthWestGravity, NorthEastGravity,
++ SouthWestGravity, SouthEastGravity };
++ int f, g = 0;
++
++ f = XParseGeometry(geom, &sh->x, &sh->y, &sh->width, &sh->height);
++
++ if (f & WidthValue)
++ sh->width = sh->base_width + sh->width * sh->width_inc;
++ if (f & HeightValue)
++ sh->height = sh->base_height + sh->height * sh->height_inc;
++ if (f & XNegative)
++ g+=1, sh->x = xw->xio->width + sh->x - sh->width - bwidth;
++ if (f & YNegative)
++ g+=2, sh->y = xw->xio->height + sh->y - sh->height - bwidth;
++
++ sh->width = bound(sh->min_width, sh->width, sh->max_width);
++ sh->height = bound(sh->min_height, sh->height, sh->max_height);
++
++ if (f & (WidthValue | HeightValue))
++ sh->flags |= USSize;
++ if (f & (XValue | YValue))
++ sh->flags |= USPosition | PWinGravity;
++
++ sh->win_gravity = gravs[g];
++}
++
++
++struct xio_win * xio_open_win(struct xio *xio, char *geom)
++{
++ struct xio_win *xw;
++ XSetWindowAttributes attr;
++ XGCValues gcval;
++ XSizeHints sizehint[1];
++ XClassHint classhint[1];
++ XWMHints wmhint[1];
++
++ if (not(xw = malloc(sizeof(*xw))))
++ goto fail1;
++
++ xw->xio = xio;
++
++ sizehint->flags = PSize | PBaseSize | PMinSize | PMaxSize | PResizeInc;
++ sizehint->x = sizehint->y = 0;
++ sizehint->width_inc = CW;
++ sizehint->height_inc = CH;
++ sizehint->base_width = 0;
++ sizehint->base_height = 0;
++ sizehint->min_width = 11*CW;
++ sizehint->min_height = 1*CH;
++ sizehint->max_width = sizehint->width = WW + CW;
++ sizehint->max_height = sizehint->height = WH;
++ set_user_geometry(xw, geom, sizehint, 1);
++
++ attr.background_pixel = xio->color[0];
++ attr.event_mask = KeyPressMask |
++ ButtonPressMask|ButtonReleaseMask|Button1MotionMask |
++ ExposureMask;
++ xw->win = XCreateWindow(xio->dpy, xio->root,
++ sizehint->x, sizehint->y, sizehint->width, sizehint->height, 1,
++ CopyFromParent, CopyFromParent, CopyFromParent,
++ CWBackPixel|CWEventMask, &attr);
++
++ classhint->res_name = "VTPage";
++ classhint->res_class = "AleVT";
++
++ wmhint->flags = InputHint | StateHint | WindowGroupHint | IconPixmapHint;
++ wmhint->input = True;
++ wmhint->initial_state = NormalState; //IconicState;
++ wmhint->window_group = xio->group_leader;
++ wmhint->icon_pixmap = xio->icon;
++
++ XSetWMProperties(xio->dpy, xw->win, 0,0, 0,0, sizehint, wmhint, classhint);
++ XSetWMProtocols(xio->dpy, xw->win, &xio->xa_del_win, 1);
++
++ xw->title[0] = 0;
++ xio_title(xw, "AleVT"); // will be reset pretty soon
++
++ gcval.graphics_exposures = False;
++ xw->gc = XCreateGC(xio->dpy, xw->win, GCGraphicsExposures, &gcval);
++
++ xw->tstamp = CurrentTime;
++ xw->fg = xw->bg = -1; /* unknown colors */
++
++ xw->curs_x = xw->curs_y = 999; // no cursor
++
++ xw->sel_y1 = NO_SEL; /* no selection area */
++ xw->sel_start_t = 0; /* no selection-drag active */
++ xw->sel_set_t = 0; /* not selection owner */
++ xw->sel_pixmap = 0; /* no selection pixmap yet */
++
++ xio_clear_win(xw);
++ xw->blink_on = xw->reveal = 0;
++
++ xw->handler = 0;
++
++ XMapWindow(xio->dpy, xw->win);
++ dl_insert_first(xio->windows, xw->node);
++ return xw;
++
++fail2:
++ free(xw);
++fail1:
++ return 0;
++}
++
++
++void xio_close_win(struct xio_win *xw, int dpy_too)
++{
++ struct xio *xio = xw->xio;
++
++ XDestroyWindow(xio->dpy, xw->win);
++ dl_remove(xw->node);
++ free(xw);
++
++ if (dpy_too && dl_empty(xio->windows))
++ xio_close_dpy(xio);
++}
++
++
++void xio_close_dpy(struct xio *xio)
++{
++ while (not dl_empty(xio->windows))
++ xio_close_win((struct xio_win *)xio->windows->first, 0);
++
++ XDestroyWindow(xio->dpy, xio->group_leader);
++ XRemoveConnectionWatch(xio->dpy, PTR xlib_conn_watch, PTR fds);
++ fdset_del_fd(fds, xio->fd);
++ dl_remove(xio->node);
++ free(xio);
++}
++
++
++void xio_set_handler(struct xio_win *xw, void *handler, void *data)
++{
++ xw->handler = handler;
++ xw->data = data;
++}
++
++
++void xio_title(struct xio_win *xw, char *title)
++{
++ char buf[sizeof(xw->title) + 32];
++
++ if (strlen(title) >= sizeof(xw->title))
++ return; //TODO: trimm...
++ if (strcmp(xw->title, title) == 0)
++ return;
++
++ strcpy(xw->title, title);
++ sprintf(buf, "AleVT " VERSION " %s", xw->title);
++ XStoreName(xw->xio->dpy, xw->win, buf);
++ XSetIconName(xw->xio->dpy, xw->win, xw->title);
++}
++
++
++void xio_clear_win(struct xio_win *xw)
++{
++ memset(xw->ch, ' ', sizeof(xw->ch));
++ xw->dheight = xw->blink = xw->concealed = 0;
++ xw->hidden = xw->lhidden = 0;
++ xw->modified = ALL_LINES;
++}
++
++
++void xio_put_line(struct xio_win *xw, int y, u8 *data)
++{
++ u8 *p = xw->ch + y*W;
++ u8 *ep = p + W;
++ lbits yb = 1 << y;
++ lbits x = xw->dheight;
++
++ if (y < 0 || y >= H)
++ return;
++
++ if (memcmp(data, p, ep - p) == 0)
++ return;
++
++ xw->modified |= yb;
++ xw->blink &= ~yb;
++ xw->dheight &= ~yb;
++ xw->concealed &= ~yb;
++
++ while (p < ep)
++ switch (*p++ = *data++)
++ {
++ case 0x08:
++ xw->blink |= yb;
++ break;
++ case 0x0d:
++ if (y < H-1)
++ xw->dheight |= yb;
++ break;
++ case 0x18:
++ xw->concealed |= yb;
++ break;
++ }
++
++ if ((xw->dheight ^ x) & yb) // dheight has changed, recalc hidden
++ {
++ xw->hidden &= yb*2 - 1;
++ for (; yb & ALL_LINES/2; yb *= 2)
++ if (~xw->hidden & xw->dheight & yb)
++ xw->hidden |= yb*2;
++ }
++}
++
++
++void xio_put_str(struct xio_win *xw, int y, u8 *str)
++{
++ u8 buf[W];
++ int l;
++ l = strlen(str);
++ if (l < W)
++ {
++ memcpy(buf, str, l);
++ memset(buf + l, ' ', W - l);
++ }
++ else
++ memcpy(buf, str, W);
++ xio_put_line(xw, y, buf);
++}
++
++
++static void dirty(struct xio_win *xw, int y1, int y2) // mark [y1,y2[ dirty
++{
++ if (y1 >= 0 && y1 < H && y1 < y2)
++ {
++ if (y2 > H)
++ y2 = H;
++ if (xw->hidden & (1 << y1))
++ y1--;
++ while (y1 < y2)
++ xw->modified |= 1 << y1++;
++ }
++}
++
++
++int xio_get_line(struct xio_win *xw, int y, u8 *data)
++{
++ if (y < 0 || y >= H)
++ return -1;
++ if (xw->hidden & (1 << y))
++ y--;
++ memcpy(data, xw->ch + y*W, 40);
++ return 0;
++}
++
++
++void xio_set_cursor(struct xio_win *xw, int x, int y)
++{
++ if (xw->curs_y >= 0 && xw->curs_y < H)
++ dirty(xw, xw->curs_y, xw->curs_y + 1);
++ if (x >= 0 && x < W && y >= 0 && y < H)
++ dirty(xw, y, y + 1);
++ else
++ x = y = 999;
++ xw->curs_x = x;
++ xw->curs_y = y;
++}
++
++
++static inline void draw_char(struct xio_win *xw, Window win, int fg, int bg,
++ int c, int dbl, int x, int y, int ry)
++{
++ struct xio *xio = xw->xio;
++
++ if (fg != xw->fg)
++ XSetForeground(xio->dpy, xw->gc, xio->color[xw->fg = fg]);
++ if (bg != xw->bg)
++ XSetBackground(xio->dpy, xw->gc, xio->color[xw->bg = bg]);
++
++ if (dbl)
++ {
++ XCopyPlane(xio->dpy, xio->font[1], win, xw->gc,
++ c%32*CW, c/32*CH*2, CW, CH*2, x*CW, y*CH, 1);
++ }
++ else
++ {
++ XCopyPlane(xio->dpy, xio->font[0], win, xw->gc,
++ c%32*CW, c/32*CH, CW, CH, x*CW, y*CH, 1);
++ if (xw->dheight & (1<<ry))
++ XCopyPlane(xio->dpy, xio->font[0], win, xw->gc,
++ ' '%32*CW, ' '/32*CH, CW, CH, x*CW, y*CH+CH, 1);
++ }
++}
++
++static void draw_cursor(struct xio_win *xw, int x, int y, int dbl)
++{
++ struct xio *xio = xw->xio;
++
++ if (xw->blink_on)
++ XSetForeground(xio->dpy, xw->gc, xio->color[xw->fg = xw->bg ^ 8]);
++ XDrawRectangle(xio->dpy, xw->win, xw->gc, x * CW, y * CH, CW-1,
++ (dbl ? 2*CH : CH)-1);
++}
++
++
++void xio_update_win(struct xio_win *xw)
++{
++ u8 *p = xw->ch;
++ lbits yb, redraw;
++ int x, y, c;
++
++ if (xw->modified == 0)
++ return;
++
++ redraw = xw->modified; // all modified lines
++ redraw |= xw->lhidden; // all previously hidden lines
++ redraw &= ~xw->hidden;
++
++ xw->lhidden = xw->hidden;
++ xw->modified = 0;
++
++ if (redraw == 0)
++ return;
++
++ for (yb = 1, y = 0; y < H; ++y, yb *= 2)
++ if (redraw & yb)
++ {
++ int fg = 7, bg = 0, _fg, _bg;
++ int dbl = 0, blk = 0, con = 0, gfx = 0, sep = 0, hld = 0;
++ int last_ch = ' ';
++
++ for (x = 0; x < W; ++x)
++ {
++ switch (c = *p++)
++ {
++ case 0x00 ... 0x07: /* alpha + foreground color */
++ fg = c & 7;
++ gfx = 0;
++ con = 0;
++ goto ctrl;
++ case 0x08: /* flash */
++ blk = not xw->blink_on;
++ goto ctrl;
++ case 0x09: /* steady */
++ blk = 0;
++ goto ctrl;
++ case 0x0a: /* end box */
++ case 0x0b: /* start box */
++ goto ctrl;
++ case 0x0c: /* normal height */
++ dbl = 0;
++ goto ctrl;
++ case 0x0d: /* double height */
++ dbl = y < H-1;
++ goto ctrl;
++ case 0x10 ... 0x17: /* graphics + foreground color */
++ fg = c & 7;
++ gfx = 1;
++ con = 0;
++ goto ctrl;
++ case 0x18: /* conceal display */
++ con = not xw->reveal;
++ goto ctrl;
++ case 0x19: /* contiguous graphics */
++ sep = 0;
++ goto ctrl;
++ case 0x1a: /* separate graphics */
++ sep = 1;
++ goto ctrl;
++ case 0x1c: /* black background */
++ bg = 0;
++ goto ctrl;
++ case 0x1d: /* new background */
++ bg = fg;
++ goto ctrl;
++ case 0x1e: /* hold graphics */
++ hld = 1;
++ goto ctrl;
++ case 0x1f: /* release graphics */
++ hld = 0;
++ goto ctrl;
++
++ case 0x0e: /* SO (reserved, double width) */
++ case 0x0f: /* SI (reserved, double size) */
++ c= ' '; break;
++ case 0x1b: /* ESC (reserved) */
++ c = ' ';
++ break;
++
++ ctrl:
++ c = ' ';
++ if (hld && gfx)
++ c = last_ch;
++ break;
++
++ case 0x80 ... 0x9f: /* these aren't used */
++ c = BAD_CHAR;
++ break;
++
++ default: /* mapped to selected font */
++ break;
++ }
++
++ if (gfx && (c & 0xa0) == 0x20)
++ {
++ last_ch = c;
++ c += (c & 0x40) ? 32 : -32;
++ }
++
++ _fg = fg;
++ _bg = bg;
++ if (blk)
++ _fg |= 8;
++ if (y >= xw->sel_y1 && y < xw->sel_y2 &&
++ x >= xw->sel_x1 && x < xw->sel_x2)
++ _bg |= 8;
++ if (con)
++ _fg = _bg;
++
++ draw_char(xw, xw->win, _fg, _bg, c, dbl, x, y, y);
++
++ if (y == xw->curs_y && x == xw->curs_x)
++ draw_cursor(xw, xw->curs_x, xw->curs_y, dbl);
++
++ if (xw->sel_pixmap && (_bg & 8))
++ draw_char(xw, xw->sel_pixmap, con ? bg : fg, bg, c, dbl,
++ x - xw->sel_x1, y - xw->sel_y1, y);
++ }
++ }
++ else
++ p += 40;
++}
++
++
++static void for_all_windows(void (*func)(struct xio_win *xw), struct xio_win *except)
++{
++ struct xio *xio, *vtn;
++ struct xio_win *xw, *vwn;
++
++ for (xio = PTR dpys->first; vtn = PTR xio->node->next; xio = vtn)
++ for (xw = PTR xio->windows->first; vwn = PTR xw->node->next; xw = vwn)
++ if (xw != except)
++ func(xw);
++}
++
++
++int xio_set_concealed(struct xio_win *xw, int on)
++{
++ on = !!on;
++ if (xw->reveal == on)
++ return on;
++
++ xw->reveal = on;
++ xw->modified |= xw->concealed;
++ return !on;
++}
++
++
++static void sel_set(struct xio_win *xw, int x1, int y1, int x2, int y2)
++{
++ int t;
++
++ x1 = bound(0, x1, W-1);
++ y1 = bound(0, y1, H-1);
++ x2 = bound(0, x2, W-1);
++ y2 = bound(0, y2, H-1);
++
++ if (x1 > x2)
++ t = x1, x1 = x2, x2 = t;
++ if (y1 > y2)
++ t = y1, y1 = y2, y2 = t;
++
++ dirty(xw, xw->sel_y1, xw->sel_y2);
++
++ if (xw->hidden & (1 << y1))
++ y1--;
++ if (xw->hidden & (2 << y2))
++ y2++;
++
++ xw->sel_x1 = x1;
++ xw->sel_y1 = y1;
++ xw->sel_x2 = x2 + 1;
++ xw->sel_y2 = y2 + 1;
++ dirty(xw, xw->sel_y1, xw->sel_y2);
++}
++
++
++static void sel_abort(struct xio_win *xw)
++{
++ if (xw->sel_set_t)
++ XSetSelectionOwner(xw->xio->dpy, XA_PRIMARY, None, xw->sel_set_t);
++ if (xw->sel_y1 != NO_SEL)
++ dirty(xw, xw->sel_y1, xw->sel_y2);
++ xw->sel_y1 = NO_SEL;
++ xw->sel_set_t = 0;
++ xw->sel_start_t = 0;
++}
++
++
++static void sel_start(struct xio_win *xw, int x, int y, Time t)
++{
++ sel_abort(xw);
++ xw->sel_start_x = x;
++ xw->sel_start_y = y;
++ xw->sel_start_t = t;
++}
++
++
++static void sel_move(struct xio_win *xw, int x, int y, Time t)
++{
++ if (xw->sel_start_t == 0)
++ return;
++ if (xw->sel_y1 == NO_SEL)
++ if (t - xw->sel_start_t < SEL_MIN_TIME)
++ if (x == xw->sel_start_x)
++ if (y == xw->sel_start_y)
++ return;
++ sel_set(xw, xw->sel_start_x, xw->sel_start_y, x, y);
++}
++
++
++static int sel_end(struct xio_win *xw, int x, int y, Time t)
++{
++ sel_move(xw, x, y, t);
++ xw->sel_start_t = 0;
++
++ if (xw->sel_y1 == NO_SEL)
++ return 0;
++
++ for_all_windows(sel_abort, xw);
++ XSetSelectionOwner(xw->xio->dpy, XA_PRIMARY, xw->win, t);
++ if (XGetSelectionOwner(xw->xio->dpy, XA_PRIMARY) == xw->win)
++ xw->sel_set_t = t;
++ else
++ sel_abort(xw);
++ return 1;
++}
++
++
++static int sel_convert2ascii(struct xio_win *xw, u8 *buf)
++{
++ u8 *d = buf;
++ int x, y, nl = 0;
++
++ for (y = xw->sel_y1; y < xw->sel_y2; y++)
++ {
++ u8 *s = xw->ch + y * W;
++ int gfx = 0, con = 0;
++
++ if (~xw->hidden & (1 << y))
++ {
++ for (x = 0; x < xw->sel_x2; ++x)
++ {
++ int ch, c = ' ';
++ switch (ch = *s++)
++ {
++ case 0x00 ... 0x07:
++ gfx = con = 0;
++ break;
++ case 0x10 ... 0x17:
++ gfx = 1, con = 0;
++ break;
++ case 0x18:
++ con = not xw->reveal;
++ break;
++ case 0xa0 ... 0xff:
++ case 0x20 ... 0x7f:
++ if (not con)
++ if (gfx && ch != ' ' && (ch & 0xa0) == 0x20)
++ c = '#';
++ else if (ch == 0x7f)
++ c = '*';
++ else
++ c = ch;
++ break;
++ }
++ if (x >= xw->sel_x1)
++ {
++ if (nl)
++ *d++ = '\n', nl = 0;
++ *d++ = c;
++ }
++ }
++ nl = 1;
++ }
++ }
++ *d = 0; // not necessary
++ return d - buf;
++}
++
++
++static Pixmap sel_convert2pixmap(struct xio_win *xw)
++{
++ struct xio *xio = xw->xio;
++ Pixmap pm;
++
++ if (xw->sel_y1 == NO_SEL)
++ return None;
++
++ pm = XCreatePixmap(xio->dpy, xio->root, (xw->sel_x2 - xw->sel_x1) * CW,
++ (xw->sel_y2 - xw->sel_y1) * CH,
++ xio->depth);
++ xw->sel_pixmap = pm;
++ dirty(xw, xw->sel_y1, xw->sel_y2);
++ xio_update_win(xw);
++ xw->sel_pixmap = 0;
++
++ return pm;
++}
++
++
++static int sel_do_conv(struct xio_win *xw, Window w, Atom type, Atom prop)
++{
++ struct xio *xio = xw->xio;
++
++ if (type == xio->xa_targets)
++ {
++ u32 atoms[6];
++
++ atoms[0] = XA_STRING;
++ atoms[1] = xio->xa_text;
++ atoms[2] = XA_PIXMAP;
++ atoms[3] = XA_COLORMAP;
++ atoms[4] = xio->xa_multiple;
++ atoms[5] = xio->xa_timestamp;
++ XChangeProperty(xio->dpy, w, prop, type,
++ 32, PropModeReplace, PTR atoms, NELEM(atoms));
++ }
++ else if (type == xio->xa_timestamp)
++ {
++ u32 t = xw->sel_set_t;
++
++ XChangeProperty(xio->dpy, w, prop, type, 32, PropModeReplace, PTR &t, 1);
++ }
++ else if (type == XA_COLORMAP)
++ {
++ u32 t = xio->cmap;
++
++ XChangeProperty(xio->dpy, w, prop, type, 32, PropModeReplace, PTR &t, 1);
++ }
++ else if (type == XA_STRING || type == xio->xa_text)
++ {
++ u8 buf[H * (W+1)];
++ int len;
++
++ len = sel_convert2ascii(xw, buf);
++
++ XChangeProperty(xio->dpy, w, prop, type, 8, PropModeReplace, buf, len);
++ }
++ else if (type == XA_PIXMAP || type == XA_DRAWABLE)
++ {
++ Pixmap pm;
++
++ pm = sel_convert2pixmap(xw);
++
++ XChangeProperty(xio->dpy, w, prop, type, 32, PropModeReplace, PTR &pm, 1);
++ }
++ else if (type == xio->xa_multiple)
++ {
++ u32 *atoms, ty, fo, i;
++ unsigned long n, b;
++
++ if (prop != None)
++ {
++ if (Success == XGetWindowProperty(xio->dpy, w, prop, 0, 1024, 0,
++ AnyPropertyType, PTR &ty, PTR &fo, &n, &b, PTR &atoms))
++ {
++ if (fo == 32 && n%2 == 0)
++ {
++ for (i = 0; i < n; i += 2)
++ if (sel_do_conv(xw, w, atoms[i], atoms[i+1]) == None)
++ atoms[i] = None;
++ }
++ XChangeProperty(xio->dpy, w, prop, type, 32, PropModeReplace,
++ PTR atoms, n);
++ XFree(atoms);
++ }
++ }
++ }
++ else
++ return None;
++ return prop;
++}
++
++
++static void sel_send(struct xio_win *xw, XSelectionRequestEvent *req)
++{
++ XSelectionEvent ev[1];
++
++ if (req->property == None)
++ req->property = req->target;
++
++ ev->type = SelectionNotify;
++ ev->requestor = req->requestor;
++ ev->selection = req->selection;
++ ev->target = req->target;
++ ev->property = sel_do_conv(xw, req->requestor, req->target, req->property);
++ ev->time = req->time;
++ XSendEvent(xw->xio->dpy, req->requestor, False, 0, PTR ev);
++}
++
++
++static void sel_retrieve(struct xio_win *xw, Window w, Atom prop, int del)
++{
++ u8 *data;
++ u32 ty, fo;
++ unsigned long n, b;
++ struct xio *xio = xw->xio;
++
++ if (prop == None)
++ return;
++
++ if (Success == XGetWindowProperty(xio->dpy, w, prop, 0, 1024, del,
++ AnyPropertyType, PTR &ty, PTR &fo, &n, &b, PTR &data))
++ {
++ if (fo == 8 && n != 0)
++ {
++ struct vt_event vtev[1];
++
++ vtev->resource = xw;
++ vtev->type = EV_SELECTION;
++ vtev->i1 = n;
++ vtev->p1 = data;
++ xw->handler(xw->data, vtev);
++ }
++ XFree(data);
++ }
++}
++
++
++void xio_cancel_selection(struct xio_win *xw)
++{
++ sel_abort(xw);
++}
++
++
++void xio_query_selection(struct xio_win *xw)
++{
++ struct xio *xio = xw->xio;
++
++ if (XGetSelectionOwner(xio->dpy, XA_PRIMARY) == None)
++ sel_retrieve(xw, xio->root, XA_CUT_BUFFER0, False);
++ else
++ {
++ XDeleteProperty(xio->dpy, xw->win, XA_STRING);
++ XConvertSelection(xio->dpy, XA_PRIMARY, XA_STRING,
++ XA_STRING, xw->win, xw->tstamp);
++ }
++}
++
++
++void xio_set_selection(struct xio_win *xw, int x1, int y1, int x2, int y2)
++{
++ sel_start(xw, x1, y1, xw->tstamp - SEL_MIN_TIME);
++ sel_end(xw, x2, y2, xw->tstamp);
++}
++
++
++static void handle_event(struct xio *xio, int fd)
++{
++ struct xio_win *xw;
++ struct vt_event vtev[1];
++ XEvent ev[1];
++
++ XNextEvent(xio->dpy, ev);
++
++ for (xw = PTR xio->windows->first; xw->node->next; xw = PTR xw->node->next)
++ if (xw->win == ev->xany.window)
++ break;
++ if (xw->node->next == 0)
++ return;
++
++ vtev->resource = xw;
++
++ switch(ev->type)
++ {
++ case Expose:
++ {
++ int y1 = ev->xexpose.y / CH;
++ int y2 = (ev->xexpose.y + ev->xexpose.height + CH-1) / CH;
++
++ dirty(xw, y1, y2);
++ break;
++ }
++ case ClientMessage:
++ {
++ vtev->type = EV_CLOSE;
++ if (ev->xclient.format == 32)
++ if ((Atom)ev->xclient.data.l[0] == xio->xa_del_win)
++ xw->handler(xw->data, vtev);
++ break;
++ }
++ case KeyPress:
++ {
++ unsigned char ch;
++ KeySym k;
++
++ xw->tstamp = ev->xkey.time;
++ vtev->type = EV_KEY;
++ vtev->i1 = 0;
++ vtev->i2 = (ev->xkey.state & ShiftMask) != 0;
++ if (XLookupString(&ev->xkey, &ch, 1, &k, 0))
++ vtev->i1 = ch;
++ else
++ switch (k)
++ {
++ case XK_Left: vtev->i1 = KEY_LEFT; break;
++ case XK_Right: vtev->i1 = KEY_RIGHT; break;
++ case XK_Up: vtev->i1 = KEY_UP; break;
++ case XK_Down: vtev->i1 = KEY_DOWN; break;
++ case XK_Prior: vtev->i1 = KEY_PUP; break;
++ case XK_Next: vtev->i1 = KEY_PDOWN; break;
++ case XK_Delete: vtev->i1 = KEY_DEL; break;
++ case XK_Insert: vtev->i1 = KEY_INS; break;
++ case XK_F1: vtev->i1 = KEY_F(1); break;
++ case XK_F2: vtev->i1 = KEY_F(2); break;
++ case XK_F3: vtev->i1 = KEY_F(3); break;
++ case XK_F4: vtev->i1 = KEY_F(4); break;
++ case XK_F5: vtev->i1 = KEY_F(5); break;
++ case XK_F6: vtev->i1 = KEY_F(6); break;
++ case XK_F7: vtev->i1 = KEY_F(7); break;
++ case XK_F8: vtev->i1 = KEY_F(8); break;
++ case XK_F9: vtev->i1 = KEY_F(9); break;
++ case XK_F10: vtev->i1 = KEY_F(10); break;
++ case XK_F11: vtev->i1 = KEY_F(11); break;
++ case XK_F12: vtev->i1 = KEY_F(12); break;
++ }
++ if (vtev->i1)
++ xw->handler(xw->data, vtev);
++ break;
++ }
++ case ButtonPress:
++ {
++ xw->tstamp = ev->xkey.time;
++ ev->xbutton.x /= CW;
++ ev->xbutton.y /= CH;
++ if (ev->xbutton.button == Button1)
++ sel_start(xw, ev->xbutton.x, ev->xbutton.y, ev->xbutton.time);
++ break;
++ }
++ case MotionNotify:
++ {
++ xw->tstamp = ev->xkey.time;
++ ev->xmotion.x /= CW;
++ ev->xmotion.y /= CH;
++ if (ev->xmotion.state & Button1Mask)
++ sel_move(xw, ev->xmotion.x, ev->xmotion.y, ev->xmotion.time);
++ break;
++ }
++ case ButtonRelease:
++ {
++ xw->tstamp = ev->xkey.time;
++ ev->xbutton.x /= CW;
++ ev->xbutton.y /= CH;
++ if (ev->xbutton.button == Button1)
++ if (sel_end(xw, ev->xbutton.x, ev->xbutton.y, ev->xbutton.time))
++ break;
++
++ vtev->type = EV_MOUSE;
++ vtev->i1 = ev->xbutton.button;
++ vtev->i2 = (ev->xbutton.state & ShiftMask) != 0;
++ vtev->i3 = ev->xbutton.x;
++ vtev->i4 = ev->xbutton.y;
++ if (vtev->i3 >= 0 && vtev->i3 < W && vtev->i4 >= 0 && vtev->i4 < H)
++ xw->handler(xw->data, vtev);
++ break;
++ }
++ case SelectionClear:
++ {
++ // may be our own Owner=None due to sel_start
++ if (xw->sel_set_t && ev->xselectionclear.time >= xw->sel_set_t)
++ {
++ xw->sel_set_t = 0; // no need to reset owner
++ sel_abort(xw);
++ }
++ break;
++ }
++ case SelectionRequest:
++ {
++ sel_send(xw, &ev->xselectionrequest);
++ break;
++ }
++ case SelectionNotify:
++ {
++ sel_retrieve(xw, ev->xselection.requestor, ev->xselection.property, True);
++ break;
++ }
++ default:
++ break;
++ }
++}
++
++
++static void switch_blink_state(struct xio_win *xw)
++{
++ xw->blink_on = !xw->blink_on;
++ xw->modified |= xw->blink;
++ dirty(xw, xw->curs_y, xw->curs_y + 1);
++}
++
++
++static void send_timer_event(struct xio_win *xw)
++{
++ struct vt_event vtev[1];
++ vtev->type = EV_TIMER;
++ xw->handler(xw->data, vtev);
++}
++
++
++static void xio_timer(void *data, int fd)
++{
++ char buf[64];
++ read(fd, buf, sizeof(buf));
++ for_all_windows(switch_blink_state, 0);
++ for_all_windows(send_timer_event, 0);
++}
++
++
++void xio_event_loop(void)
++{
++ struct xio *xio, *vtn;
++ int f;
++
++ while (not dl_empty(dpys))
++ {
++ do
++ {
++ for_all_windows(xio_update_win, 0);
++ f = 0;
++ for (xio = PTR dpys->first; vtn = PTR xio->node->next; xio = vtn)
++ while (XPending(xio->dpy))
++ {
++ handle_event(xio, xio->fd);
++ f++;
++ }
++ } while (f);
++ fdset_select(fds, -1);
++ }
++}
+diff -r af23d23c278b util/alevt/xio.h
+--- /dev/null Thu Jan 01 00:00:00 1970 +0000
++++ b/util/alevt/xio.h Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,80 @@
++#ifndef VTXIO_H
++#define VTXIO_H
++
++#include <X11/Xlib.h>
++#include "vt.h"
++#include "dllist.h"
++
++typedef u32 lbits;
++#define ALL_LINES ((1ul << H) - 1)
++
++/* one xio per display */
++struct xio
++{
++ struct dl_node node[1];
++ int argc;
++ char **argv;
++ Display *dpy; /* display connection */
++ int fd; /* the displays file descriptor */
++ Atom xa_del_win; /* WM_DELETE_WINDOW atom */
++ Atom xa_targets; /* TARGETS atom (selection) */
++ Atom xa_timestamp; /* TIMESTAMP atom (selection) */
++ Atom xa_text; /* TEXT atom (selection) */
++ Atom xa_multiple; /* MULTIPLE atom (selection) */
++ Window group_leader; /* unmapped window */
++ int screen; /* DefaultScreen */
++ int width, height; /* DisplayWidth/Height */
++ int depth; /* DefaultDepth */
++ Window root; /* DefaultRoot */
++ Colormap cmap;
++ int color[16]; /* 8 normal, 8 dim intensity */
++ Pixmap font[2]; /* normal, dbl-height */
++ Pixmap icon; /* icon pixmap */
++ struct dl_head windows[1]; /* all windows on this display */
++};
++
++/* one vt_win per window */
++struct xio_win
++{
++ struct dl_node node[1];
++ struct xio *xio; /* display */
++ Window win; /* the drawing window */
++ Time tstamp; /* timestamp of last user event */
++ GC gc; /* it's graphics context */
++ u8 ch[H*W]; /* the page contents */
++ lbits modified, hidden, lhidden; /* states for each line */
++ lbits dheight, blink, concealed; /* attributes for each line */
++ int fg, bg; /* current foreground/background */
++ int blink_on; /* blinking on */
++ int reveal; /* reveal concealed text */
++ void (*handler)(void *data, struct vt_event *ev); /* event-handler */
++ void *data; /* data for the event-handler */
++ int curs_x, curs_y; /* cursor position */
++ u8 title[32]; /* the user title */
++ // selection support
++ int sel_start_x, sel_start_y;
++ Time sel_start_t;
++ Time sel_set_t; /* time we got selection owner */
++ int sel_x1, sel_y1, sel_x2, sel_y2; /* selected area */
++ Pixmap sel_pixmap; /* for pixmap-selection requests */
++};
++
++struct xio *xio_open_dpy(char *dpy, int argc, char **argv);
++struct xio_win *xio_open_win(struct xio *xio, char *geom);
++void xio_close_win(struct xio_win *xw, int dpy_too);
++void xio_close_dpy(struct xio *xio);
++void xio_set_handler(struct xio_win *xw, void *handler, void *data);
++void xio_clear_win(struct xio_win *xw);
++void xio_put_line(struct xio_win *xw, int line, u8 *data);
++void xio_put_str(struct xio_win *xw, int line, u8 *c_str);
++int xio_get_line(struct xio_win *xw, int line, u8 *data);
++int xio_set_concealed(struct xio_win *xw, int on);
++void xio_update_win(struct xio_win *xw);
++void xio_fd_handler(int fd, void *handler, void *data);
++void xio_cancel_selection(struct xio_win *xw);
++void xio_query_selection(struct xio_win *xw);
++void xio_set_selection(struct xio_win *xw, int x1, int y1, int x2, int y2);
++void xio_set_cursor(struct xio_win *xw, int x, int y);
++void xio_event_loop(void);
++void xio_title(struct xio_win *xw, char *title);
++#endif
+diff -r af23d23c278b util/femon/femon.c
+--- a/util/femon/femon.c Sat Jun 20 16:47:55 2009 +0200
++++ b/util/femon/femon.c Tue Dec 21 12:13:28 2010 +0100
+@@ -42,14 +42,21 @@
+ static char *usage_str =
+ "\nusage: femon [options]\n"
+ " -H : human readable output\n"
++ " -A : Acoustical mode. A sound indicates the signal quality.\n"
++ " -r : If 'Acoustical mode' is active it tells the application\n"
++ " is called remotely via ssh. The sound is heard on the 'real'\n"
++ " machine but. The user has to be root.\n"
+ " -a number : use given adapter (default 0)\n"
+ " -f number : use given frontend (default 0)\n"
+ " -c number : samples to take (default 0 = infinite)\n\n";
+
++int sleep_time=1000000;
++int acoustical_mode=0;
++int remote=0;
+
+ static void usage(void)
+ {
+- fprintf(stderr, usage_str);
++ fprintf(stderr, "%s", usage_str);
+ exit(1);
+ }
+
+@@ -59,6 +66,27 @@
+ {
+ struct dvbfe_info fe_info;
+ unsigned int samples = 0;
++ FILE *ttyFile=NULL;
++
++ // We dont write the "beep"-codes to stdout but to /dev/tty1.
++ // This is neccessary for Thin-Client-Systems or Streaming-Boxes
++ // where the computer does not have a monitor and femon is called via ssh.
++ if(acoustical_mode)
++ {
++ if(remote)
++ {
++ ttyFile=fopen("/dev/tty1","w");
++ if(!ttyFile)
++ {
++ fprintf(stderr, "Could not open /dev/tty1. No access rights?\n");
++ exit(-1);
++ }
++ }
++ else
++ {
++ ttyFile=stdout;
++ }
++ }
+
+ do {
+ if (dvbfe_get_info(fe, FE_STATUS_PARAMS, &fe_info, DVBFE_INFO_QUERYTYPE_IMMEDIATE, 0) != FE_STATUS_PARAMS) {
+@@ -94,12 +122,24 @@
+ if (fe_info.lock)
+ printf("FE_HAS_LOCK");
+
++ // create beep if acoustical_mode enabled
++ if(acoustical_mode)
++ {
++ int signal=(fe_info.signal_strength * 100) / 0xffff;
++ fprintf( ttyFile, "\033[10;%d]\a", 500+(signal*2));
++ // printf("Variable : %d\n", signal);
++ fflush(ttyFile);
++ }
++
+ printf("\n");
+ fflush(stdout);
+- usleep(1000000);
++ usleep(sleep_time);
+ samples++;
+ } while ((!count) || (count-samples));
+-
++
++ if(ttyFile)
++ fclose(ttyFile);
++
+ return 0;
+ }
+
+@@ -148,7 +188,7 @@
+ int human_readable = 0;
+ int opt;
+
+- while ((opt = getopt(argc, argv, "Ha:f:c:")) != -1) {
++ while ((opt = getopt(argc, argv, "rAHa:f:c:")) != -1) {
+ switch (opt)
+ {
+ default:
+@@ -166,6 +206,15 @@
+ case 'H':
+ human_readable = 1;
+ break;
++ case 'A':
++ // Acoustical mode: we have to reduce the delay between
++ // checks in order to hear nice sound
++ sleep_time=5000;
++ acoustical_mode=1;
++ break;
++ case 'r':
++ remote=1;
++ break;
+ }
+ }
+
+diff -r af23d23c278b util/gotox/Makefile
+--- /dev/null Thu Jan 01 00:00:00 1970 +0000
++++ b/util/gotox/Makefile Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,17 @@
++# Makefile for linuxtv.org dvb-apps/util/gotox
++
++binaries = gotox
++
++inst_bin = $(binaries)
++
++CPPFLAGS += -I../../lib
++LDFLAGS += -L../../lib/libdvbapi
++LDFLAGS += -L../../lib/libdvbsec
++LDLIBS += -ldvbapi
++LDLIBS += -ldvbsec
++
++.PHONY: all
++
++all: $(binaries)
++
++include ../../Make.rules
+diff -r af23d23c278b util/gotox/gotox.c
+--- /dev/null Thu Jan 01 00:00:00 1970 +0000
++++ b/util/gotox/gotox.c Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,145 @@
++/*
++ * Copyright (C) 2006 by Michel Verbraak <michel@verbraak.org>
++ *
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 2 of the License, or
++ * (at your option) any later version.
++ *
++ * This program is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++ * GNU General Public License for more details
++ *
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the
++ * Free Software Foundation, Inc.,
++ * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
++ */
++
++
++#ifdef HAVE_CONFIG_H
++#include <config.h>
++#endif
++
++#include <stdio.h>
++#include <stdlib.h>
++#include <unistd.h>
++#include <libdvbapi/dvbfe.h>
++#include <libdvbsec/dvbsec_api.h>
++
++static char *usage_str =
++ "\nusage: gotox [options] -d <angle>\n"
++ " Goto the specified angle. Positive value for East rotation\n"
++ " Negative value for West rotation on Northern Hemisphere.\n"
++ " -d degrees : Angle to turn to in degrees (default 0)\n"
++ " -a number : use given adapter (default 0)\n"
++ " -f number : use given frontend (default 0)\n"
++ " -t seconds : leave power on to rotor for at least specified seconds of time (default 30)\n\n";
++
++int main(int argc, char *argv[])
++{
++ struct dvbfe_handle *fe;
++ unsigned int adapter = 0, frontend = 0;
++ double angle = 0;
++ int opt;
++ unsigned int sleepcount = 30;
++ static char *weststr = "west";
++ static char *eaststr = "east";
++
++ while ((opt = getopt(argc, argv, "ha:f:t:d:")) != -1) {
++
++ switch (opt){
++ case '?':
++ case 'h':
++ default:
++ fprintf(stderr, "%s", usage_str);
++ return EXIT_SUCCESS;
++
++ case 'a':
++ adapter = strtoul(optarg, NULL, 0);
++ break;
++
++ case 'f':
++ frontend = strtoul(optarg, NULL, 0);
++ break;
++
++ case 't':
++ sleepcount = strtoul(optarg, NULL, 0);
++ break;
++
++ case 'd':
++ angle = strtod(optarg, NULL);
++ break;
++ }
++ }
++
++ printf("Will try to rotate %s to %.2f degrees.\n", (angle < 0.0) ? weststr : eaststr, angle );
++
++ fe = dvbfe_open(adapter, frontend, 0);
++ if (fe == NULL) {
++ fprintf(stderr, "Could not open frontend %d on adapter %d.\n", frontend, adapter);
++ exit(1);
++ }
++
++ if (dvbfe_set_voltage(fe, DVBFE_SEC_VOLTAGE_OFF) != 0) {
++ fprintf(stderr, "Could not turn off power.\n");
++ dvbfe_close(fe);
++ return 1;
++ }
++ else
++ printf("Power OFF.\n");
++
++ sleep(1);
++
++ if (dvbfe_set_voltage(fe, DVBFE_SEC_VOLTAGE_18) != 0) {
++ fprintf(stderr, "Could not turn on power.\n");
++ dvbfe_close(fe);
++ return 1;
++ }
++ else
++ printf("Power on to 18V.\n");
++
++ sleep(1);
++
++ if (abs(angle) == 0.0) {
++
++ if (dvbsec_diseqc_goto_satpos_preset(fe, DISEQC_ADDRESS_POLAR_AZIMUTH_POSITIONER, 0) != 0) {
++ fprintf(stderr, "Could not goto 0.\n");
++ dvbfe_close(fe);
++ return 2;
++ } else {
++ printf("Going to home base 0 degrees.\n");
++ }
++ } else {
++
++ if (dvbsec_diseqc_goto_rotator_bearing(fe, DISEQC_ADDRESS_POLAR_AZIMUTH_POSITIONER, angle) != 0) {
++ fprintf(stderr, "Could not rotate.\n");
++ dvbfe_close(fe);
++ return 2;
++ }
++ }
++
++ while (sleepcount != 0) {
++ printf("%d: Rotating to %.2f.\r", sleepcount, angle);
++ fflush(NULL);
++ sleepcount--;
++ sleep(1);
++ }
++
++ printf("\nRotated.\n");
++
++ if (dvbfe_set_voltage(fe, DVBFE_SEC_VOLTAGE_OFF) != 0) {
++ fprintf(stderr, "Could not turn off power.\n");
++ dvbfe_close(fe);
++ return 1;
++ }
++ else
++ printf("Power OFF.\n");
++
++ sleep(1);
++
++ dvbfe_close(fe);
++
++ return EXIT_SUCCESS;
++}
+diff -r af23d23c278b util/scan/dvb-c/at-Kabel-Braunau
+--- /dev/null Thu Jan 01 00:00:00 1970 +0000
++++ b/util/scan/dvb-c/at-Kabel-Braunau Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,26 @@
++# Kabel Braunau
++# freq sr fec mod
++C 386000000 6900000 NONE QAM64
++C 394000000 6875000 NONE QAM64
++C 402000000 6875000 NONE QAM64
++C 410000000 6875000 NONE QAM64
++C 418000000 6875000 NONE QAM64
++C 426000000 6875000 NONE QAM64
++C 434000000 6875000 NONE QAM64
++C 458000000 6875000 NONE QAM64
++C 466000000 6900000 NONE QAM64
++C 474000000 6900000 NONE QAM64
++C 482000000 6111000 NONE QAM64
++C 490000000 6111000 NONE QAM64
++C 498000000 6875000 NONE QAM64
++C 506000000 6111000 NONE QAM64
++C 514000000 6111000 NONE QAM64
++C 522000000 6428000 NONE QAM128
++C 530000000 6428000 NONE QAM128
++C 546000000 6875000 NONE QAM64
++C 554000000 6875000 NONE QAM64
++C 562000000 6875000 NONE QAM64
++C 570000000 6111000 NONE QAM64
++C 578000000 6900000 NONE QAM256
++C 586000000 6900000 NONE QAM256
++C 594000000 6875000 NONE QAM64
+diff -r af23d23c278b util/scan/dvb-c/at-Kabelsignal
+--- /dev/null Thu Jan 01 00:00:00 1970 +0000
++++ b/util/scan/dvb-c/at-Kabelsignal Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,38 @@
++# kabelsignal
++# freq sr fec mod
++C 314000000 6900000 NONE QAM256
++C 322000000 6900000 NONE QAM256
++C 330000000 6900000 NONE QAM256
++C 338000000 6900000 NONE QAM256
++C 346000000 6900000 NONE QAM256
++C 354000000 6900000 NONE QAM256
++C 362000000 6900000 NONE QAM256
++C 370000000 6900000 NONE QAM256
++C 378000000 6900000 NONE QAM256
++C 386000000 6900000 NONE QAM256
++C 394000000 6900000 NONE QAM256
++C 402000000 6900000 NONE QAM256
++C 410000000 6900000 NONE QAM256
++C 418000000 6900000 NONE QAM256
++C 426000000 6900000 NONE QAM256
++C 434000000 6900000 NONE QAM256
++C 442000000 6900000 NONE QAM256
++C 450000000 6900000 NONE QAM256
++C 666000000 6900000 NONE QAM256
++C 674000000 6900000 NONE QAM256
++C 682000000 6900000 NONE QAM256
++C 690000000 6900000 NONE QAM256
++C 698000000 6900000 NONE QAM256
++C 706000000 6900000 NONE QAM256
++C 714000000 6900000 NONE QAM256
++C 722000000 6900000 NONE QAM256
++C 730000000 6900000 NONE QAM256
++C 738000000 6900000 NONE QAM256
++C 746000000 6900000 NONE QAM256
++C 762000000 6900000 NONE QAM256
++C 770000000 6900000 NONE QAM256
++C 778000000 6900000 NONE QAM256
++C 786000000 6900000 NONE QAM256
++C 794000000 6900000 NONE QAM256
++C 802000000 6900000 NONE QAM256
++C 810000000 6900000 NONE QAM256
+diff -r af23d23c278b util/scan/dvb-c/at-KarrerNet
+--- a/util/scan/dvb-c/at-KarrerNet Sat Jun 20 16:47:55 2009 +0200
++++ b/util/scan/dvb-c/at-KarrerNet Tue Dec 21 12:13:28 2010 +0100
+@@ -1,18 +1,26 @@
+ # Kabel St. Florian bei Linz/AT KarrerNet
+ # 2009-01-10
+ # freq sr fec mod
+-C 418000000 6900000 NONE QAM64
+-C 426000000 6900000 NONE QAM64
+-C 434000000 6900000 NONE QAM64
+ C 442000000 6900000 NONE QAM64
+-C 450000000 6900000 NONE QAM64
+ C 458000000 6900000 NONE QAM64
+ C 466000000 6900000 NONE QAM64
+ C 474000000 6900000 NONE QAM64
+ C 482000000 6900000 NONE QAM64
++C 490000000 6900000 NONE QAM64
++C 498000000 6900000 NONE QAM64
++C 506000000 6900000 NONE QAM64
++C 514000000 6900000 NONE QAM64
+ C 522000000 6900000 NONE QAM64
+ C 530000000 6900000 NONE QAM64
+ C 538000000 6900000 NONE QAM64
++C 546000000 6900000 NONE QAM64
++C 554000000 6900000 NONE QAM64
++C 562000000 6900000 NONE QAM64
++C 570000000 6900000 NONE QAM64
+ C 578000000 6900000 NONE QAM64
+-C 402000000 6900000 NONE QAM256
++C 586000000 6900000 NONE QAM64
++C 610000000 6900000 NONE QAM64
++C 386000000 6900000 NONE QAM256
++C 394000000 6900000 NONE QAM256
+ C 410000000 6900000 NONE QAM256
++C 434000000 6900000 NONE QAM256
+diff -r af23d23c278b util/scan/dvb-c/de-Primacom
+--- a/util/scan/dvb-c/de-Primacom Sat Jun 20 16:47:55 2009 +0200
++++ b/util/scan/dvb-c/de-Primacom Tue Dec 21 12:13:28 2010 +0100
+@@ -1,6 +1,9 @@
+ # Primacom
+ # freq sr fec mod
+ C 121000000 6900000 NONE QAM64
++C 129000000 6900000 NONE QAM256
++C 137000000 6900000 NONE QAM256
++C 145000000 6900000 NONE QAM256
+ C 306000000 6900000 NONE QAM64
+ C 314000000 6900000 NONE QAM64
+ C 322000000 6900000 NONE QAM64
+@@ -13,6 +16,8 @@
+ C 378000000 6900000 NONE QAM256
+ C 386000000 6900000 NONE QAM256
+ C 394000000 6900000 NONE QAM256
++C 402000000 6900000 NONE QAM256
++C 410000000 6900000 NONE QAM256
+ C 418000000 6900000 NONE QAM256
+ C 434000000 6900000 NONE QAM64
+ C 442000000 6900000 NONE QAM64
+diff -r af23d23c278b util/scan/dvb-c/de-Unitymedia
+--- a/util/scan/dvb-c/de-Unitymedia Sat Jun 20 16:47:55 2009 +0200
++++ b/util/scan/dvb-c/de-Unitymedia Tue Dec 21 12:13:28 2010 +0100
+@@ -1,35 +1,36 @@
+ # Unitymedia
+-# Created from http://www.unitymedia.de/service/tv/frequenzen.html
+-# and http://blob.unitymedia.de/Download/Unitymedia_Senderlineup_digital_2008-05-28.pdf
++# Created from http://www.unitymedia.de/service/soforthilfe/frequenzen.html
++# and http://www.unitymedia.de/images/UnityDigitalTV_Lineup_01-07-2009.pdf
+ # freq sr fec mod
+ C 113000000 6900000 NONE QAM256
+ C 121000000 6900000 NONE QAM256
+-C 338000000 6900000 NONE QAM256
+ C 346000000 6900000 NONE QAM256
+ C 354000000 6900000 NONE QAM64
+ C 362000000 6900000 NONE QAM64
+ C 370000000 6900000 NONE QAM64
+ C 378000000 6900000 NONE QAM64
+ C 386000000 6900000 NONE QAM64
+-C 394000000 6900000 NONE QAM256
++C 394000000 6900000 NONE QAM64
+ C 402000000 6900000 NONE QAM256
+ C 410000000 6900000 NONE QAM256
+ C 418000000 6900000 NONE QAM256
+ C 426000000 6900000 NONE QAM256
+ C 434000000 6900000 NONE QAM256
+-C 442000000 6900000 NONE QAM64
+-C 450000000 6900000 NONE QAM64
++C 442000000 6900000 NONE QAM256
++C 450000000 6900000 NONE QAM256
+ C 458000000 6900000 NONE QAM256
+ C 466000000 6900000 NONE QAM256
+-C 474000000 6900000 NONE QAM64
+ C 522000000 6900000 NONE QAM256
+ C 530000000 6900000 NONE QAM256
+ C 538000000 6900000 NONE QAM256
++C 546000000 6900000 NONE QAM256
+ C 554000000 6900000 NONE QAM256
+ C 562000000 6900000 NONE QAM256
+ C 570000000 6900000 NONE QAM256
+-C 610000000 6900000 NONE QAM64
+ C 650000000 6900000 NONE QAM256
+ C 658000000 6900000 NONE QAM256
+ C 666000000 6900000 NONE QAM256
+ C 674000000 6900000 NONE QAM256
++C 682000000 6900000 NONE QAM256
++C 690000000 6900000 NONE QAM256
++C 698000000 6900000 NONE QAM256
+diff -r af23d23c278b util/scan/dvb-c/de-komro-Rosenheim
+--- /dev/null Thu Jan 01 00:00:00 1970 +0000
++++ b/util/scan/dvb-c/de-komro-Rosenheim Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,30 @@
++# komro (Rosenheim)
++# freq sr fec mod
++C 113000000 6900000 NONE QAM64
++C 121000000 6900000 NONE QAM64
++C 338000000 6900000 NONE QAM256
++C 394000000 6900000 NONE QAM256
++C 450000000 6900000 NONE QAM64
++C 458000000 6900000 NONE QAM64
++C 466000000 6900000 NONE QAM64
++C 522000000 6900000 NONE QAM256
++C 530000000 6900000 NONE QAM256
++C 602000000 6900000 NONE QAM256
++C 610000000 6900000 NONE QAM256
++C 626000000 6900000 NONE QAM256
++C 642000000 6900000 NONE QAM256
++C 650000000 6900000 NONE QAM256
++C 658000000 6900000 NONE QAM64
++C 666000000 6900000 NONE QAM64
++C 682000000 6900000 NONE QAM64
++C 690000000 6900000 NONE QAM256
++C 698000000 6900000 NONE QAM256
++C 706000000 6900000 NONE QAM256
++C 714000000 6900000 NONE QAM256
++C 722000000 6900000 NONE QAM256
++C 730000000 6900000 NONE QAM64
++C 738000000 6900000 NONE QAM64
++C 746000000 6900000 NONE QAM64
++C 754000000 6900000 NONE QAM64
++C 762000000 6900000 NONE QAM256
++C 778000000 6900000 NONE QAM64
+diff -r af23d23c278b util/scan/dvb-c/fi-Oulu
+--- /dev/null Thu Jan 01 00:00:00 1970 +0000
++++ b/util/scan/dvb-c/fi-Oulu Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,19 @@
++# DVB-C Channels in Oulu (Finland)
++# dna network
++# freq sr fec mod
++C 330000000 6875000 NONE QAM128 #mux1
++C 370000000 6875000 NONE QAM128 #mux2
++C 362000000 6875000 NONE QAM128 #mux3
++C 354000000 6875000 NONE QAM128 #mux4
++C 346000000 6875000 NONE QAM128 #mux5
++C 338000000 6875000 NONE QAM128 #mux6
++C 322000000 6875000 NONE QAM128 #mux7
++C 314000000 6875000 NONE QAM128 #mux8
++C 378000000 6875000 NONE QAM128 #mux9
++C 306000000 6875000 NONE QAM128 #mux10
++C 298000000 6875000 NONE QAM128 #mux11
++C 290000000 6875000 NONE QAM128 #mux12
++C 274000000 6875000 NONE QAM128 #mux13
++C 266000000 6875000 NONE QAM128 #mux14
++C 258000000 6875000 NONE QAM128 #mux15
++C 250000000 6875000 NONE QAM128 #mux16
+diff -r af23d23c278b util/scan/dvb-c/fi-Turku
+--- a/util/scan/dvb-c/fi-Turku Sat Jun 20 16:47:55 2009 +0200
++++ b/util/scan/dvb-c/fi-Turku Tue Dec 21 12:13:28 2010 +0100
+@@ -3,6 +3,13 @@
+ C 146000000 6900000 NONE QAM128
+ C 154000000 6900000 NONE QAM128
+ C 162000000 6900000 NONE QAM128
++C 234000000 6900000 NONE QAM256
++C 242000000 6900000 NONE QAM256
++C 250000000 6900000 NONE QAM256
++C 258000000 6900000 NONE QAM256
++C 266000000 6900000 NONE QAM256
++C 290000000 6900000 NONE QAM128
++C 298000000 6900000 NONE QAM128
+ C 322000000 6900000 NONE QAM128
+ C 330000000 6900000 NONE QAM128
+ C 338000000 6900000 NONE QAM128
+@@ -14,4 +21,3 @@
+ C 418000000 6900000 NONE QAM128
+ C 426000000 6900000 NONE QAM128
+ C 442000000 6900000 NONE QAM128
+-C 354000000 6900000 NONE QAM256
+diff -r af23d23c278b util/scan/dvb-c/hu-Digikabel
+--- /dev/null Thu Jan 01 00:00:00 1970 +0000
++++ b/util/scan/dvb-c/hu-Digikabel Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,21 @@
++# Digikabel, Hungary
++# For the following cities:
++# Budapest, Dorog, Hatvan, Kiskunhalas, Debrecen, Szekesfehervar, Pecs,
++# Veszprem, Dunaujvaros, Miskolc, Gyongyos, Tatabanya, Varpalota, Nagykanizsa,
++# Salgotarjan, Batonyterenye, Szolnok, Szentistvan, Nyiregyhaza, Gyor,
++# Szazhalombatta, Bekescsaba, Bekes, Eger, Komlo, Oroszlany
++# In some of the cities not all the frequencies are available.
++# freq sr fec mod
++C 354000000 6900000 NONE QAM256
++C 362000000 6900000 NONE QAM256
++C 370000000 6900000 NONE QAM256
++C 378000000 6900000 NONE QAM256
++C 386000000 6900000 NONE QAM256
++C 394000000 6900000 NONE QAM256
++C 402000000 6900000 NONE QAM256
++C 410000000 6900000 NONE QAM256
++C 762000000 6900000 NONE QAM256
++C 770000000 6900000 NONE QAM256
++C 778000000 6900000 NONE QAM256
++C 786000000 6900000 NONE QAM256
++C 794000000 6900000 NONE QAM256
+diff -r af23d23c278b util/scan/dvb-c/nl-REKAM-CAIW_Gouda
+--- /dev/null Thu Jan 01 00:00:00 1970 +0000
++++ b/util/scan/dvb-c/nl-REKAM-CAIW_Gouda Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,4 @@
++# REKAM / Caiway, Gouda, Netherlands
++# freq sr fec mod
++C 163000000 6875000 NONE QAM64
++C 770000000 6900000 NONE QAM64
+diff -r af23d23c278b util/scan/dvb-c/se-comhem
+--- a/util/scan/dvb-c/se-comhem Sat Jun 20 16:47:55 2009 +0200
++++ b/util/scan/dvb-c/se-comhem Tue Dec 21 12:13:28 2010 +0100
+@@ -1,3 +1,25 @@
+ # com hem
+ # freq sr fec mod
++C 289500000 6875000 NONE QAM64
++C 298000000 6875000 NONE QAM64
++C 306000000 6875000 NONE QAM64
++C 314000000 6875000 NONE QAM64
++C 322000000 6875000 NONE QAM64
++C 338000000 6875000 NONE QAM64
++C 346000000 6875000 NONE QAM64
++C 354000000 6875000 NONE QAM64
+ C 362000000 6875000 NONE QAM64
++C 370000000 6875000 NONE QAM64
++C 378000000 6875000 NONE QAM64
++C 386000000 6875000 NONE QAM64
++C 394000000 6875000 NONE QAM64
++C 402000000 6875000 NONE QAM64
++C 418000000 6875000 NONE QAM64
++C 434000000 6875000 NONE QAM64
++C 442000000 6875000 NONE QAM64
++C 450000000 6875000 NONE QAM64
++C 458000000 6875000 NONE QAM64
++C 714000000 6875000 NONE QAM64
++C 722000000 6875000 NONE QAM64
++C 738000000 6875000 NONE QAM64
++C 786000000 6875000 NONE QAM64
+diff -r af23d23c278b util/scan/dvb-s/Agila2_C-146.0E
+--- /dev/null Thu Jan 01 00:00:00 1970 +0000
++++ b/util/scan/dvb-s/Agila2_C-146.0E Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,60 @@
++# Agila 2 @ 146.0E C-BAND
++# Generated by Pietro Casoar
++# 1st March 2009
++
++# MPEG-2 & MPEG-4 QPSK (DVBS/S2)
++# freq pol sr fec
++
++# Viva Prime Channel
++S 3725000 H 2345000 3/4
++
++# Zoe Philippines
++S 3774000 V 3300000 3/4
++
++# Da Ai TV indonesia
++S 3791000 H 3100000 3/4
++
++# Trinity Broadcasting Multiplex
++S 3791000 V 10091000 5/6
++
++# Bayon TV
++S 3796000 H 3360000 3/4
++
++# White Springs TV
++S 3846000 H 6110000 3/4
++
++# TCT World
++S 3854000 H 2603000 5/6
++
++# CCTN
++S 3873000 V 2532000 3/4
++
++# NBN Philippines
++S 3875000 H 3000000 3/4
++
++# Al Masriyah
++S 3880000 H 2000000 3/4
++
++# Viva Entertainment Multiplex
++S 3887000 H 6716000 3/4
++
++# IBC13
++S 3896000 H 3000000 3/4
++
++# CTN Cambodia Multiplex
++S 3979000 V 9628000 3/4
++
++# Divya TV
++S 3990000 V 13330000 3/4
++
++# Familyland TV Network
++S 4164000 V 3735000 7/8
++
++# MTV Philippines
++S 4171000 V 3213000 3/4
++
++# The Old Path TV
++S 4183000 V 2170000 3/4
++
++# UNTV
++S 4188000 V 2170000 3/4
+diff -r af23d23c278b util/scan/dvb-s/Apstar6_C-134.0E
+--- /dev/null Thu Jan 01 00:00:00 1970 +0000
++++ b/util/scan/dvb-s/Apstar6_C-134.0E Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,15 @@
++# Apstar 6 @ 134.0E C-BAND
++# Generated by Pietro Casoar
++# 1st March 2009
++
++# MPEG-2 & MPEG-4 QPSK (DVBS/S2)
++# freq pol sr fec
++
++# New Entertainment
++S 3766000 H 4285000 3/4
++
++# Test
++S 3840000 H 27500000 3/4
++
++# TV Nusantara
++S 3905000 H 3250000 3/4
+diff -r af23d23c278b util/scan/dvb-s/AsiaSat2_C-100.5E
+--- /dev/null Thu Jan 01 00:00:00 1970 +0000
++++ b/util/scan/dvb-s/AsiaSat2_C-100.5E Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,51 @@
++# AsiaSat 2 100.5E C-BAND
++# Generated by Pietro Casoar
++# 1st March 2009
++
++# MPEG-2 & MPEG-4 QPSK (DVBS/S2)
++# freq pol sr fec
++
++# Iris Sat Multiplex
++S 3660000 V 27500000 3/4
++
++# APTN Direct
++S 3706000 H 4167000 5/6
++
++# APTN Global Video Wire (MPEG-4 S/2)
++S 3732000 H 8889000 2/3
++
++# BYU TV
++S 3767000 V 6527000 1/2
++
++# AJK TV
++S 3778000 V 3333000 3/4
++
++# RTB International Brunei
++S 3786000 H 6000000 7/8
++
++# Shamshad TV
++S 3790000 V 2444000 3/4
++
++# FTV HD (MPEG-4 S/2)
++S 3794000 H 4640000 3/4
++
++# Arabsat ASBU Bouquet Multiplex
++S 3820000 V 27500000 3/4
++
++# Star TV Multiplex (MPEG-4 S/2)
++S 3840000 H 30000000 3/4
++
++# E Network Multiplex
++S 3880000 H 27500000 3/4
++
++# SatLink Multiplex
++S 3960000 H 27500000 3/4
++
++# Star TV Multiplex
++S 3980000 V 28100000 3/4
++
++# SatLink European Bouquet (MPEG-2 & MPEG-4 S2)
++S 4000000 H 28125000 3/4
++
++# Macau Satellite TV Multiplex
++S 4148000 V 11852000 3/4
+diff -r af23d23c278b util/scan/dvb-s/AsiaSat3S_C-105.5E
+--- a/util/scan/dvb-s/AsiaSat3S_C-105.5E Sat Jun 20 16:47:55 2009 +0200
++++ b/util/scan/dvb-s/AsiaSat3S_C-105.5E Tue Dec 21 12:13:28 2010 +0100
+@@ -1,122 +1,102 @@
+ # AsiaSat 3S 105.5E C-BAND
+-# Generated by Xingbo Wang
+-# Apr 2, 2005
++# Generated by Pietro Casoar
++# 1st March 2009
+
+-# MPEG-2 QPSK
++# MPEG-2 & MPEG-4 QPSK (DVBS/S2)
+ # freq pol sr fec
+
+-# [encrypted] ZEE English, ZEE TV International, ZEE Movies, MX, ZEE TV SE Asia, ZEE TV Asia, Trendz
+-S 3700000 V 27500000 3/4
++# China Entertainment TV & Maharishi Veda Vision
++S 3680000 H 26670000 3/4
++
++# MediaCorp Channel News Asia
++S 3706000 H 6000000 3/4
+
+ # BTV World
+ S 3725000 V 4450000 3/4
+
+-# SAB TV
+-S 3743000 V 3300000 3/4
++# Galaxy TVB
++S 3729000 H 13650000 3/4
+
+-# AAJ TV
+-S 3750000 V 2820000 3/4
++# Zee Network
++S 3733000 V 6500000 3/4
+
+-# Arirang TV
+-S 3755150 V 4417900 7/8
++# Madani Channel
++S 3739000 V 2815000 3/4
+
+-# [encrypted] STAR Plus India, STAR Movies India, STAR News India, National Geographic India, STAR Gold, STAR Movies (Middle East)
+-# STAR Utsav
++# Fashion TV
++S 3746000 V 2625000 3/4
++
++# Aaj News
++S 3750000 V 2821000 3/4
++
++# Arirang Arab
++S 3755000 V 4418000 7/8
++
++# Globecast multiplex
++S 3760000 H 26000000 7/8
++
++# Star TV Multiplex
+ S 3780000 V 28100000 3/4
+
+-# Chinese Provincial TV: Guangxi, Shanxi, Anhui, Jiangsu, Heilongjiang
+-S 3806000 V 4420000 3/4
+-S 3813000 V 4420000 3/4
+-S 3820000 V 4420000 3/4
+-S 3827000 V 4420000 3/4
+-S 3834000 V 4420000 3/4
++# Airwaves Media Multiplex
++S 3786000 H 5700000 3/4
+
+-# [encrypted] ESPN Taiwan, STAR Sports Taiwan, ESPN Asia, STAR Sports South East Asia, STAR Sports India, ESPN India, ESPN Philippines
++# Zee Network Multiplex
++S 3820000 V 27500000 3/4
++
++# Star TV Multiplex
++S 3840000 H 26850000 7/8
++
++# Star TV Multiplex
+ S 3860000 V 27500000 3/4
+
+-# Dragon TV
+-S 3886000 V 4800000 3/4
++# B4U INDIA - MPEG-4 S/2 Multiplex
++S 3880000 H 27500000 3/4
+
+-# Shandong TV
+-S 3895000 V 6813000 3/4
++# Star TV Multiplex
++S 3940000 V 28100000 3/4
+
+-# CCTV-1(comprehensive), China National Radio Channel 1
+-S 3904000 V 4420000 7/8
++# Tuner International Multiplex
++S 3960000 H 28100000 3/4
+
+-# Jilin Provincial TV
+-S 3914500 V 4420000 3/4
+-
+-# [encrypted] A1, History, STAR Movies SEA/China, STAR World India, STAR Plus Pakistan, Channel[V] India, STAR Chinese Movies, CNBC India, STAR One, STAR Vijay
++# Star TV Multiplex
+ S 3980000 V 28100000 3/4
+
+-# Sahara One, Sahara Samay National, Sahara Samay Mumbai, Sahara Samay Uttar Pradesh, Sahara Samay Bihar, Sahara Samay Madhya Pradesh
++# Star TV Multiplex
++S 4000000 H 26850000 7/8
++
++# Sahara Samay Multiplex
+ S 4020000 V 27250000 3/4
+
+-# Tianjin TV
+-S 4046000 V 5950000 3/4
++# VOA Voice Of America Multiplex
++S 4040000 H 20400000 1/2
+
+-# PTV-1, PTV World, PTV Channel 3, AVT Khyber
++# Globecast Multiplex
++S 4071000 H 14240000 3/4
++
++# PTV Multiplex
+ S 4091000 V 13333000 3/4
+
+-# PTV National
+-S 4106000 V 3333300 3/4
++# Sun TV
++S 4095000 H 5554000 3/4
+
+-# Indus News
+-S 4115750 V 3333000 3/4
++# PTV Global USA
++S 4102000 V 2894000 3/4
+
+-# [encrypted] ZEE Biz, ZEE News, ZEE Cinema, ZEE Music, Alpha TV Punjabi, Alpha TV Gujarati, Alpha TV Bangla, Alpha TV Marathi, Smile TV
++# PTV Global UK & Europe
++S 4106000 V 2894000 3/4
++
++# Galaxy TVB Multiplex
++S 4111000 H 13650000 3/4
++
++# PTV Multiplex
++S 4114000 V 7000000 3/4
++
++# Eye TV Multiplex
++S 4129000 H 13600000 3/4
++
++# Zee Network Multiplex
+ S 4140000 V 27500000 3/4
+
+-# Chinese Provincial TV: Henan, Fujian, Jiangxi, Liaoning
+-S 4166000 V 4420000 3/4
+-S 4180000 V 4420000 3/4
+-S 4187000 V 4420000 3/4
+-S 4194000 V 4420000 3/4
+-
+-# CETV
+-S 3680000 H 26670000 3/4
+-
+-# Channel NewsAsia
+-S 3706000 H 6000000 3/4
+-
+-# Asia Plus
+-S 3715500 H 7000000 3/4
+-
+-# TVB 8, CETV
+-S 3729000 H 13650000 3/4
+-
+-# Network of the World, Bloomberg TV Asia, Indus Vision, Indus Music, Muslim TV Ahmadiyya, Living Asia Channel
+-# [encrypted] Filmazia
+-S 3760000 H 26000000 7/8
+-
+-# [encrypted] Fox News, Sky News, STAR Movies Int'l Taiwan, National Geographic Taiwan, STAR Chinese Channel, STAR Movies mandarin, Channel[V] Taiwan
+-S 3840000 H 26850000 7/8
+-
+-# STAR Sports Asia
+-# [encrypted] ESPN China, STAR Sports Hong Kong, ESPN Hong Kong
+-S 3920000 H 26750000 7/8
+-
+-# [encrypted] CNN International Asia, CNN Newsource, Cartoon Network Asia, Cartoon Network Taiwan, Cartoon Network Philippines, Cartoon Network Australia/New Zealand, TCM Australia, Boomerang
+-S 3960000 H 27500000 3/4
+-
+-# [encrypted] Phoenix Movies, star World Asia, Star Movies Int'l, Channel[V] International, National Geographic Regional
+-# Phoenix Chinese Channel, Phoenix Info News Channel, Xiong Kong Int'l, Xing Kong Regional, Channel[V](Greater China)
+-S 4000000 H 26850000 7/8
+-
+-# Chinese Provincial TV: Hubei, Sichuan
+-S 4034600 H 4420000 3/4
+-S 4051000 H 4420000 3/4
+-
+-# Chinese Provincial TV: Qinghai, Hunan
+-S 4067000 H 4420000 3/4
+-S 4082000 H 4420000 3/4
+-
+-# Sun TV
+-S 4094000 H 5555000 3/4
+-
+-# MATV, Horizon Channel
+-# [encrypted] Tian Ying Movies Channel, TVB Xing He Channel
+-S 4111000 H 13650000 3/4
+-
+-# CCTV Channel 4 (International), Channel 9 (English language), CCTV E&F
+-S 4129000 H 13240000 3/4
++# Geo TV Network Multiplex
++S 4180000 V 26666000 3/4
+diff -r af23d23c278b util/scan/dvb-s/Asiasat4_C-122.2E
+--- /dev/null Thu Jan 01 00:00:00 1970 +0000
++++ b/util/scan/dvb-s/Asiasat4_C-122.2E Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,27 @@
++# Asiasat 4 @ 122.2E C-BAND
++# Generated by Pietro Casoar
++# 1st March 2009
++
++# MPEG-2 & MPEG-4 QPSK (DVBS/S2)
++# freq pol sr fec
++
++# SITI Digital Network Multiplex
++S 3760000 H 27500000 3/4
++
++# SITI Digital Network Multiplex
++S 3820000 V 27500000 3/4
++
++# Henan Radio Multiplex
++S 3856000 H 2170000 3/4
++
++# SITI Digital Network Multiplex
++S 3880000 H 27500000 3/4
++
++# SITI Digital network Multiplex
++S 3920000 H 27500000 3/4
++
++# SITI Digital network Multiplex
++S 3960000 H 27500000 3/4
++
++# SITI Digital network Multiplex
++S 4180000 V 27500000 3/4
+diff -r af23d23c278b util/scan/dvb-s/Astra-23.5E
+--- /dev/null Thu Jan 01 00:00:00 1970 +0000
++++ b/util/scan/dvb-s/Astra-23.5E Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,66 @@
++# Astra 23.5E
++# freq pol sr fec
++S 10758000 V 22000000 7/8
++S 10788000 V 22000000 5/6
++S 10802000 H 22000000 5/6
++S 10842000 V 13333000 5/6
++S 10862000 H 22000000 5/6
++# Astra2Connect
++# S2 10891250 H 22000000 3/4 AUTO 8PSK
++S 11475000 V 27500000 3/4
++S 11515000 H 27500000 3/4
++S2 11515000 V 28500000 9/10 AUTO QPSK
++S2 11555000 H 28500000 9/10 AUTO QPSK
++S2 11555000 V 28500000 9/10 AUTO QPSK
++S2 11592000 V 28500000 9/10 AUTO QPSK
++S2 11595000 H 28500000 9/10 AUTO QPSK
++S2 11635000 H 28500000 9/10 AUTO QPSK
++S2 11635000 V 28500000 9/10 AUTO QPSK
++S 11675000 H 27500000 3/4
++S2 11675000 V 28500000 9/10 AUTO QPSK
++S2 11719000 H 27500000 9/10 AUTO QPSK
++S 11739000 V 27500000 3/4
++# Astra2Connect
++# S2 11758000 H 27500000 5/6 AUTO 8PSK
++S2 11778000 V 27500000 9/10 AUTO QPSK
++S 11798000 H 27500000 3/4
++S2 11817000 V 27500000 9/10 AUTO QPSK
++S 11836000 H 29900000 3/4
++S2 11856000 V 27500000 5/6 AUTO QPSK
++S 11875000 H 27500000 3/4
++S 11914000 H 27500000 3/4
++# Astra2Connect
++# S2 11954000 H 27500000 3/4 AUTO 8PSK
++S 11992000 H 27500000 3/4
++S 12012000 V 27500000 3/4
++S2 12032000 H 27500000 9/10 AUTO QPSK
++S 12070000 H 27500000 3/4
++S2 12109000 H 27500000 9/10 AUTO QPSK
++# Astra2Connect
++# S2 12148000 H 27500000 3/4 AUTO 8PSK
++S 12168000 V 27500000 3/4
++# Astra2Connect
++# S2 12226000 H 27500000 3/5 AUTO 8PSK
++# Astra2Connect
++# S2 12304000 H 27500000 5/6 AUTO 8PSK
++# Astra2Connect
++# S2 12344000 H 28200000 5/6 AUTO 8PSK
++# Astra2Connect
++# S2 12382000 H 27500000 3/4 AUTO 8PSK
++S 12525000 H 27500000 3/4
++S 12525000 V 27500000 3/4
++S 12565000 H 27500000 2/3
++S 12565000 V 27500000 3/4
++S2 12605000 H 28500000 9/10 AUTO QPSK
++S2 12605000 V 28500000 9/10 AUTO QPSK
++S 12630000 V 6000000 3/4
++S 12631000 H 6666000 7/8
++S 12636000 V 2277000 5/6
++S 12641000 H 2220000 7/8
++S 12644000 H 2170000 3/4
++S 12649000 H 5600000 5/6
++S 12661000 H 2170000 5/6
++S 12685000 V 27500000 3/4
++S 12696000 H 3255000 1/2
++S 12711000 H 6111000 AUTO
++S 12725000 V 27500000 3/4
+diff -r af23d23c278b util/scan/dvb-s/Atlantic-Bird-3-5.0W
+--- /dev/null Thu Jan 01 00:00:00 1970 +0000
++++ b/util/scan/dvb-s/Atlantic-Bird-3-5.0W Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,4 @@
++# Atlantic Bird 3 @ 5.0W
++# freq pol sr fec
++S 11096000 V 29950000 7/8
++S 11591000 V 20000000 2/3
+diff -r af23d23c278b util/scan/dvb-s/Chinastar1_C-87.5E
+--- /dev/null Thu Jan 01 00:00:00 1970 +0000
++++ b/util/scan/dvb-s/Chinastar1_C-87.5E Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,15 @@
++# ChinaStar 1 @ 87.5E C-BAND
++# Generated by Pietro Casoar
++# 1st March 2009
++
++# MPEG-2 & MPEG-4 QPSK (DVBS/S2)
++# freq pol sr fec
++
++# Myawady TV
++S 3734000 H 5925000 3/4
++
++# Zam TV Tests
++S 4076000 H 2532000 3/4
++
++# Test Card
++S 4081000 H 4687000 3/4
+diff -r af23d23c278b util/scan/dvb-s/Insat2E_C-83.0E
+--- /dev/null Thu Jan 01 00:00:00 1970 +0000
++++ b/util/scan/dvb-s/Insat2E_C-83.0E Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,93 @@
++# Insat 2E @ 83.0E C-BAND
++# Generated by Pietro Casoar
++# 1st March 2009
++
++# MPEG-2 & MPEG-4 QPSK (DVBS/S2)
++# freq pol sr fec
++
++# NE TV Multiplex
++S 3521000 V 8640000 3/4
++
++# NE TV Multiplex
++S 3537000 V 10800000 3/4
++
++# TV 9 Telugu
++S 3550000 V 3255000 3/4
++
++# S1 Channel
++S 3559000 V 3366000 3/4
++
++# TV 9 Kannada
++S 3581000 V 3255000 3/4
++
++# Jaya TV
++S 3593000 V 8680000 3/4
++
++# Tata Communications Multiplex
++S 3593000 V 9629000 3/4
++
++# Asianet Multiplex
++S 3643000 V 19531000 3/4
++
++# Amrita TV Middle East
++S 3678000 V 5926000 3/4
++
++# Mahaa TV
++S 3689000 V 2893000 3/4
++
++# Tata Communications Multiplex
++S 3696000 V 6111000 3/4
++
++# CNBC India
++S 3760000 V 6500000 3/4
++
++# Raj TV Network Multiplex
++S 3774000 V 13021000 3/4
++
++# UTVi TV
++S 3794000 V 3500000 3/5
++
++# PTC Multiplex (MPEG-4 S/2)
++S 3815000 V 6000000 3/4
++
++# Tata Communications Multiplex
++S 3845000 V 26043000 3/4
++
++# Indiavision
++S 3914000 V 3000000 3/4
++
++# Yes Indiavision
++S 3919000 V 3000000 3/4
++
++# Manorama News International
++S 3923000 V 3000000 3/4
++
++# Tata Communications Multiplex
++S 3934000 V 13021000 3/4
++
++# Raj Musix kanada
++S 3961000 V 6656000 3/4
++
++# TV 9 Multiplex
++S 3974000 V 13333000 3/4
++
++# Asianet Multiplex
++S 4010000 V 19531000 3/4
++
++# Tata Communications Multiplex
++S 4031000 V 7440000 7/8
++
++# RRSat Multiplex
++S 4042000 V 7420000 7/8
++
++# Tata Communications Multiplex
++S 4050000 V 5084000 7/8
++
++# DD national
++S 4070000 V 5000000 3/4
++
++# Indiasign Mulitplex
++S 4091000 V 9230000 7/8
++
++# News Live (MPEG-4 S/2)
++S 4100000 V 4700000 3/4
+diff -r af23d23c278b util/scan/dvb-s/Insat3A_C-93.5E
+--- /dev/null Thu Jan 01 00:00:00 1970 +0000
++++ b/util/scan/dvb-s/Insat3A_C-93.5E Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,66 @@
++# Insat 3A @ 93.5E C-BAND
++# Generated by Pietro Casoar
++# 1st March 2009
++
++# MPEG-2 & MPEG-4 QPSK (DVBS/S2)
++# freq pol sr fec
++
++# DD Bangla
++S 3732000 V 6250000 3/4
++
++# DD Punjab
++S 3740000 V 6250000 3/4
++
++# DD Gujarati
++S 3750000 V 6250000 3/4
++
++# DD Chandana
++S 3759000 V 6250000 3/4
++
++# DD Oriya
++S 3772000 V 6250000 3/4
++
++# DD kashir
++S 3782000 V 6250000 3/4
++
++# DD Sahyadri
++S 3791000 V 8600000 3/4
++
++# DD Malayalam
++S 3812000 V 6250000 3/4
++
++# DD Saptagiri
++S 3820000 V 6250000 3/4
++
++# DD podhigai
++S 3831000 V 8600000 3/4
++
++# DD Himachal Pradesh
++S 3932000 V 6250000 3/4
++
++# DD Jaipur
++S 3940000 V 6250000 3/4
++
++# Madhya Pradesh
++S 3950000 V 6250000 3/4
++
++# DD Uttar Pradesh
++S 3958000 V 6250000 3/4
++
++# DD North East
++S 4092000 V 6250000 3/4
++
++# DD Mizoram
++S 4101000 V 6250000 3/4
++
++# DD Tripura
++S 4109000 V 4250000 3/4
++
++# RTA Afghanistan
++S 4132000 V 4000000 3/4
++
++# RTA Afghanistan Nangarhar
++S 4136000 V 2000000 3/4
++
++# Ariana TV Network Multiplex
++S 4141000 V 5150000 3/4
+diff -r af23d23c278b util/scan/dvb-s/Insat4A_C-83.0E
+--- /dev/null Thu Jan 01 00:00:00 1970 +0000
++++ b/util/scan/dvb-s/Insat4A_C-83.0E Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,93 @@
++# Insat 4A @ 83.0E C-BAND
++# Generated by Pietro Casoar
++# 1st March 2009
++
++# MPEG-2 & MPEG-4 QPSK (DVBS/S2)
++# freq pol sr fec
++
++# NSTPL Multiplex
++S 3725000 H 26665000 3/4
++
++# Indiasign multiplex
++S 3756000 H 13333000 3/4
++
++# Star TV Multiplex
++S 3777000 H 10900000 3/4
++
++# Essel Shyam Multiplex
++S 3805000 H 28500000 7/8
++
++# Tarang TV Multiplex (MPEG-4 S/2)
++S 3841000 H 6920000 3/4
++
++# CTVN AKD Plus
++S 3853000 H 3265000 3/4
++
++# Kasthuri TV
++S 3857000 H 3462000 3/4
++
++# Kamyab TV
++S 3874000 H 3403000 3/4
++
++# Vanitha TV
++S 3892000 H 3300000 3/4
++
++# Essel Shayam Multiplex
++S 3898000 H 6800000 3/4
++
++# Channel 10 India
++S 3910000 H 3600000 7/8
++
++# Essel Shyam
++S 3923000 H 13000000 3/4
++
++# DY 365
++S 3949000 H 3225000 3/4
++
++# Multiplex
++S 3958000 H 9500000 7/8
++
++# Zee News Uttar Pradesh
++S 3976000 H 3200000 3/4
++
++# ETV Network Multiplex
++S 4004000 H 22220000 5/6
++
++# Essel Shyam
++S 4040000 H 7500000 7/8
++
++# Lamhas Multiplex
++S 4054000 H 13230000 3/4
++
++# Network 18 Multiplex
++S 4072000 H 6500000 3/4
++
++# IBN Lokmat
++S 4078000 H 3250000 3/4
++
++# Live India
++S 4087000 H 3300000 3/4
++
++# Mi Marathi
++S 4091000 H 3000000 3/4
++
++# BBS TV
++S 4100000 H 4750000 3/4
++
++# Manorama News
++S 4115000 H 5555000 3/4
++
++# BAG Films
++S 4134000 H 10600000 3/4
++
++# Zee Network Multiplex
++S 4151000 H 6500000 3/4
++
++# Zee Network Multiplex
++S 4161000 H 6500000 3/4
++
++# Lok Sabha TV
++S 4170000 H 6500000 3/4
++
++# Kolkata TV
++S 4180000 H 3233000 3/4
+diff -r af23d23c278b util/scan/dvb-s/Insat4B_C-93.5E
+--- /dev/null Thu Jan 01 00:00:00 1970 +0000
++++ b/util/scan/dvb-s/Insat4B_C-93.5E Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,51 @@
++# Insat 4B @ 93.5E C-BAND
++# Generated by Pietro Casoar
++# 1st March 2009
++
++# MPEG-2 & MPEG-4 QPSK (DVBS/S2)
++# freq pol sr fec
++
++# Doordarshan Multiplex
++S 3725000 H 27500000 3/4
++
++# DD Dehradun
++S 3750000 H 4250000 3/4
++
++# DD Raipur
++S 3762000 H 4250000 3/4
++
++# DD Ranchi
++S 3768000 H 4250000 3/4
++
++# DD Jammu
++S 3774000 H 4250000 3/4
++
++# DD Hissar
++S 3802000 H 4250000 3/4
++
++# DD Chandigarh
++S 3808000 H 4250000 3/4
++
++# DD Port Blair
++S 3822000 H 4250000 3/4
++
++# DD Bihar
++S 3832000 H 6250000 3/4
++
++# DD North East
++S 3841000 H 6250000 3/4
++
++# Sun network
++S 3885000 H 28000000 3/4
++
++# Doordarshan Multiplex
++S 3925000 H 27500000 3/4
++
++# Sakshi TV
++S 3950000 H 4440000 3/4
++
++# Tata Communications Multiplex
++S 4005000 H 25422000 7/8
++
++# Sun Network
++S 4045000 H 28000000 3/4
+diff -r af23d23c278b util/scan/dvb-s/Intelsat8_C-166.0E
+--- /dev/null Thu Jan 01 00:00:00 1970 +0000
++++ b/util/scan/dvb-s/Intelsat8_C-166.0E Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,39 @@
++# Intelsat 8 @ 166.0E C-BAND
++# Generated by Pietro Casoar
++# 1st March 2009
++
++# MPEG-2 & MPEG-4 QPSK (DVBS/S2)
++# freq pol sr fec
++
++# Viacom Multiplex
++S 3740000 H 27500000 2/3
++
++# South Korean Multiplex
++S 3790000 V 6510000 3/4
++
++# Arirang World
++S 3815000 V 4400000 3/4
++
++# Australian network Multiplex
++S 3829000 H 13238000 3/4
++
++# TVBS multiplex
++S 3833000 V 17500000 3/4
++
++# NBC Universal
++S 3900000 H 27500000 3/4
++
++# Intelsat multiplex
++S 3940000 H 27690000 7/8
++
++# China Radio multiplex
++S 3959000 V 3428000 3/4
++
++# NHK World network Multiplex
++S 4060000 H 16180000 1/2
++
++# Philippines Network TV Multiplex
++S 4122000 V 5554000 3/4
++
++# TAS Multiplex
++S 4130000 V 5800000 3/4
+diff -r af23d23c278b util/scan/dvb-s/JCSat3A_C-128.0E
+--- /dev/null Thu Jan 01 00:00:00 1970 +0000
++++ b/util/scan/dvb-s/JCSat3A_C-128.0E Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,18 @@
++# JCSAT 3A @ 128.0E C-BAND
++# Generated by Pietro Casoar
++# 1st March 2009
++
++# MPEG-2 & MPEG-4 QPSK (DVBS/S2)
++# freq pol sr fec
++
++# TAS Multiplex
++S 3960000 V 30000000 5/6
++
++# TAS Multiplex
++S 4000000 V 30000000 5/6
++
++# Miraclenet
++S 4055000 V 3332000 3/4
++
++# TAS Multiplex
++S 4120000 V 30000000 5/6
+diff -r af23d23c278b util/scan/dvb-s/Measat3_C-91.5E
+--- /dev/null Thu Jan 01 00:00:00 1970 +0000
++++ b/util/scan/dvb-s/Measat3_C-91.5E Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,54 @@
++# Measat 3 @ 91.5E C-BAND
++# Generated by Pietro Casoar
++# 1st March 2009
++
++# MPEG-2 & MPEG-4 QPSK (DVBS/S2)
++# freq pol sr fec
++
++# Shop TV
++S 3629000 V 2200000 3/4
++
++# Aora TV Mulitplex
++S 3644000 H 22320000 3/4
++
++# Solar Entertainment
++S 3645000 V 19510000 3/4
++
++# National Geographic music
++S 3718000 V 1700000 7/8
++
++# DZRH TV Multiplex
++S 3721000 V 2170000 3/4
++
++# Ascent Media (MPEG-4 S/2)
++S 3751000 V 13330000 2/3
++
++# Globecast Multiplex (MPEG-4 S/2)
++S 3769000 V 14000000 3/4
++
++# HTV Multiplex
++S 3796000 V 7030000 3/4
++
++# Sky International
++S 3814000 V 6666000 3/4
++
++# Un-named Mulitplex
++S 3865000 V 3835000 3/4
++
++# RTM Multiplex
++S 3877000 V 12525000 7/8
++
++# RTM Sarawak Feeds
++S 3887000 V 3984000 3/4
++
++# Globecast Multiplex
++S 3920000 V 28000000 7/8
++
++# Ginx TV
++S 4113000 V 2960000 3/4
++
++# YR Asia TV
++S 4117000 V 2963000 3/4
++
++# All Sports Network (MPEG-4 S/2)
++S 4134000 V 7200000 3/4
+diff -r af23d23c278b util/scan/dvb-s/PalapaC2_C-113.0E
+--- /dev/null Thu Jan 01 00:00:00 1970 +0000
++++ b/util/scan/dvb-s/PalapaC2_C-113.0E Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,39 @@
++# Palapa C2 @ 113.0E C-BAND
++# Generated by Pietro Casoar
++# 1st March 2009
++
++# MPEG-2 & MPEG-4 QPSK (DVBS/S2)
++# freq pol sr fec
++
++# SCTV Jawa Timur
++S 3745000 H 3125000 3/4
++
++# SCTV
++S 3758000 H 4470000 3/4
++
++# TVRI Nasional
++S 3765000 H 5555000 3/4
++
++# RCTI
++S 3774000 H 6520000 3/4
++
++# KBS World Indonesia
++S 3836000 V 2097000 3/4
++
++# Bali TV
++S 3926000 H 4208000 3/4
++
++# TV One Indonesia
++S 4054000 H 5632000 3/4
++
++# ANTV Indonesia
++S 4055000 V 6510000 3/4
++
++# Indosiar
++S 4074000 V 6500000 3/4
++
++# Satelindo Multiplex
++S 4080000 H 28125000 3/4
++
++# TPI Indonesia
++S 4184000 V 6700000 3/4
+diff -r af23d23c278b util/scan/dvb-s/ST1_C-80.0E
+--- /dev/null Thu Jan 01 00:00:00 1970 +0000
++++ b/util/scan/dvb-s/ST1_C-80.0E Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,27 @@
++# ST1 @ 88.0E C-BAND
++# Generated by Pietro Casoar
++# 1st March 2009
++
++# MPEG-2 & MPEG-4 QPSK (DVBS/S2)
++# freq pol sr fec
++
++# GTV Multiplex
++S 3469000 V 30000000 3/4
++
++# ABTV Multiplex
++S 3521000 H 8332000 5/6
++
++# Videoland Multiplex
++S 3550000 V 30000000 3/4
++
++# GTV Multiplex
++S 3595000 H 30000000 3/4
++
++# Videoland multiplex
++S 3632000 V 30000000 3/4
++
++# Chungwa Telecom
++S 3671000 H 9256000 3/4
++
++# NTD TV Asia-Pacific
++S 3689000 H 3000000 3/4
+diff -r af23d23c278b util/scan/dvb-s/Telkom1_C-108.0E
+--- /dev/null Thu Jan 01 00:00:00 1970 +0000
++++ b/util/scan/dvb-s/Telkom1_C-108.0E Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,48 @@
++# Telkom 1 @ 108.0E C-BAND
++# Generated by Pietro Casoar
++# 1st March 2009
++
++# MPEG-2 & MPEG-4 QPSK (DVBS/S2)
++# freq pol sr fec
++
++# Telkom Vision Multiplex
++S 3580000 H 28000000 3/4
++
++# Telkom Vision Multiplex
++S 3620000 H 28000000 3/4
++
++# Telkom Vision Multiplex
++S 3640000 V 28000000 3/4
++
++# TV Timor Leste
++S 3776000 H 4285000 3/4
++
++# TV Edukasi 1
++S 3785000 H 4000000 3/4
++
++# TVRI Kalbar
++S 3793000 H 3000000 3/4
++
++# TVRI Papua
++S 3797000 H 3900000 3/4
++
++# TV Edukasi 2
++S 3807000 H 4000000 3/4
++
++# Trans 7
++S 3990000 H 6000000 3/4
++
++# TVRI Aceh
++S 4015000 H 6000000 3/4
++
++# RCTI Jawa Timur
++S 4025000 H 3000000 3/4
++
++# Trans TV
++S 4084000 H 6000000 3/4
++
++# Papua TV
++S 4092000 H 3570000 3/4
++
++# JTV
++S 4097000 H 3125000 3/4
+diff -r af23d23c278b util/scan/dvb-s/Telstar10_C-76.5E
+--- /dev/null Thu Jan 01 00:00:00 1970 +0000
++++ b/util/scan/dvb-s/Telstar10_C-76.5E Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,63 @@
++# Telstar 10 @ 76.5E C-BAND
++# Generated by Pietro Casoar
++# 1st March 2009
++
++# MPEG-2 & MPEG-4 QPSK (DVBS/S2)
++# freq pol sr fec
++
++# Racing International
++S 3646000 H 5064000 3/4
++
++# Image Channel
++S 3655000 H 3214000 3/4
++
++# Globe Cast Asia multiplex
++S 3680000 H 27500000 3/4
++
++# UBI World TV Multiplex
++S 3760000 H 28066000 2/3
++
++# UBI World TV Multiplex
++S 3780000 V 28066000 2/3
++
++# Ekushey TV
++S 3787000 H 4600000 2/3
++
++# Diganta TV
++S 3793000 H 4340000 3/4
++
++# RRSat Global Network Multiplex
++S 3840000 H 27500000 3/4
++
++# Channel 1
++S 4003000 H 4080000 3/4
++
++# Boishakhi TV
++S 4009000 H 4300000 3/4
++
++# TV Maldives
++S 4030000 V 6312000 1/2
++
++# Channel I
++S 4034000 H 4300000 3/4
++
++# Bangla Vision
++S 4049000 H 3600000 3/4
++
++# Kantipur TV
++S 4056000 H 3214000 3/4
++
++# BBC World Service Multiplex
++S 4073000 H 13020000 1/2
++
++# MNC Indonesia
++S 4105000 H 3125000 3/4
++
++# NDTV Arabia
++S 4137000 H 2893000 3/4
++
++# Islamic TV
++S 4146000 H 3600000 3/4
++
++# Bangladesh Multiplex
++S 4173000 H 7400000 3/4
+diff -r af23d23c278b util/scan/dvb-s/Telstar18_C-138.0E
+--- /dev/null Thu Jan 01 00:00:00 1970 +0000
++++ b/util/scan/dvb-s/Telstar18_C-138.0E Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,18 @@
++# Telstar 18 @ 138.0E C-BAND
++# Generated by Pietro Casoar
++# 1st March 2009
++
++# MPEG-2 & MPEG-4 QPSK (DVBS/S2)
++# freq pol sr fec
++
++# I-Sky-Net Multiplex
++S 3599000 V 30000000 3/4
++
++# I-Sky-Net Multiplex
++S 3660000 V 30000000 3/4
++
++# LNTV Laos
++S 3704000 V 3034000 3/4
++
++# BBC World Service Multiplex
++S 4124000 V 3255000 1/2
+diff -r af23d23c278b util/scan/dvb-s/Thaicom1A_C-120.0E
+--- /dev/null Thu Jan 01 00:00:00 1970 +0000
++++ b/util/scan/dvb-s/Thaicom1A_C-120.0E Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,24 @@
++# Thaicom 1A @ 120.0E C-BAND
++# Generated by Pietro Casoar
++# 1st March 2009
++
++# MPEG-2 & MPEG-4 QPSK (DVBS/S2)
++# freq pol sr fec
++
++# TV3 Cambodia
++S 3725000 V 3255000 3/4
++
++# Panyapiwat
++S 3745000 V 2850000 5/6
++
++# CTN Cambodia Multiplex
++S 3854000 V 9628000 3/4
++
++# Kasikorn TV
++S 3881000 V 2000000 3/4
++
++# Bayon TV
++S 3916000 V 3359000 3/4
++
++# Radio Thailand Multiplex
++S 4135000 V 1808000 3/4
+diff -r af23d23c278b util/scan/dvb-s/Thaicom2_C-78.5E
+--- /dev/null Thu Jan 01 00:00:00 1970 +0000
++++ b/util/scan/dvb-s/Thaicom2_C-78.5E Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,33 @@
++# Thaicom 2 @ 78.5E C-BAND
++# Generated by Pietro Casoar
++# 1st March 2009
++
++# MPEG-2 & MPEG-4 QPSK (DVBS/S2)
++# freq pol sr fec
++
++# BBTV Channel 7
++S 3764000 H 5900000 3/4
++
++# SBT TV
++S 3803000 H 1445000 7/8
++
++# MCOT Multiplex
++S 3888000 H 15625000 3/4
++
++# Royal Thai Army TV 5
++S 3905000 H 6250000 3/4
++
++# Thai TV Color Channel 3
++S 3967000 H 4551000 3/4
++
++# RU TV 1
++S 4003000 H 1085000 3/4
++
++# Ten TV & Rich Channel
++S 4016000 H 2305000 7/8
++
++# NBT TV
++S 4106000 H 4688000 3/4
++
++# Thai PBS
++S 4145000 H 4815000 3/4
+diff -r af23d23c278b util/scan/dvb-s/Thaicom5_C-78.5E
+--- /dev/null Thu Jan 01 00:00:00 1970 +0000
++++ b/util/scan/dvb-s/Thaicom5_C-78.5E Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,69 @@
++# Thaicom 5 @ 78.5E C-BAND
++# Generated by Pietro Casoar
++# 1st March 2009
++
++# MPEG-2 & MPEG-4 QPSK (DVBS/S2)
++# freq pol sr fec
++
++# ETC India Multiplex
++S 3421000 V 6667000 3/4
++
++# Europe Media Port Multiplex
++S 3431000 H 13333000 3/4
++
++# Nepal TV Multiplex
++S 3432000 V 6667000 3/4
++
++# CTV9
++S 3448000 V 2222000 3/4
++
++# RRSat Global Network (MPEG-4 S/2)
++S 3450000 H 13333000 3/4
++
++# Avenues TV
++S 3454000 V 3333000 3/4
++
++# PSI Channel
++S 3460000 V 1538000 3/4
++
++# Sagarmatha TV
++S 3489000 V 3333000 3/4
++
++# Dhi TV
++S 3502000 V 4444000 2/3
++
++# Korean Central TV
++S 3504000 H 3367000 2/3
++
++# Gang Cartoon Channel
++S 3505000 V 1852000 3/4
++
++# Lao Star Channel
++S 3521000 V 2917000 3/4
++
++# Thaicom Multiplex
++S 3545000 V 30000000 5/6
++
++# RRSat Global Network
++S 3551000 H 13333000 3/4
++
++# VTV Maldives
++S 3562000 H 4444000 1/2
++
++# MRTV Multiplex
++S 3574000 H 7492000 2/3
++
++# Thaicom Multiplex
++S 3585000 V 26667000 3/4
++
++# Thaicom Multiplex
++S 3600000 H 26667000 3/4
++
++# MRTV Multiplex
++S 3617000 V 12500000 3/4
++
++# RRSat Global Network Multiplex
++S 3640000 H 28066000 3/4
++
++# TVK Cambodia
++S 3664000 H 3704000 3/4
+diff -r af23d23c278b util/scan/dvb-s/Vinasat1_C-132.0E
+--- /dev/null Thu Jan 01 00:00:00 1970 +0000
++++ b/util/scan/dvb-s/Vinasat1_C-132.0E Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,12 @@
++# VINASAT 1 @ 132.0E C-BAND
++# Generated by Pietro Casoar
++# 1st March 2009
++
++# MPEG-2 & MPEG-4 QPSK (DVBS/S2)
++# freq pol sr fec
++
++# VTV Multiplex (VTV 1, VTV 2, VTV 3, VTV 4, VTV6)
++S 3413000 V 9766000 3/4
++
++# VOV TV (Voice of VietNam)
++S 3529000 V 2500000 2/3
+diff -r af23d23c278b util/scan/dvb-t/au-Adelaide
+--- a/util/scan/dvb-t/au-Adelaide Sat Jun 20 16:47:55 2009 +0200
++++ b/util/scan/dvb-t/au-Adelaide Tue Dec 21 12:13:28 2010 +0100
+@@ -10,3 +10,5 @@
+ T 219500000 7MHz 3/4 NONE QAM64 8k 1/16 NONE
+ # SBS
+ T 564500000 7MHz 2/3 NONE QAM64 8k 1/8 NONE
++# 3D Trial Australia
++T 536625000 7MHz 3/4 NONE QAM16 8k 1/8 NONE
+diff -r af23d23c278b util/scan/dvb-t/au-AdelaideFoothills
+--- /dev/null Thu Jan 01 00:00:00 1970 +0000
++++ b/util/scan/dvb-t/au-AdelaideFoothills Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,12 @@
++# Australia / Adelaide / Grenfell Street
++# T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
++# ABC
++T 781625000 7MHz 3/4 NONE QAM64 8k 1/16 NONE
++# Seven
++T 711500000 7MHz 3/4 NONE QAM64 8k 1/16 NONE
++# Nine
++T 795500000 7MHz 3/4 NONE QAM64 8k 1/16 NONE
++# Ten
++T 732500000 7MHz 3/4 NONE QAM64 8k 1/16 NONE
++# SBS
++T 760500000 7MHz 2/3 NONE QAM64 8k 1/8 NONE
+diff -r af23d23c278b util/scan/dvb-t/au-Ballarat
+--- /dev/null Thu Jan 01 00:00:00 1970 +0000
++++ b/util/scan/dvb-t/au-Ballarat Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,12 @@
++# Australia / Ballarat
++# T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
++# ABC
++T 620625000 7MHz 3/4 NONE QAM64 8k 1/16 NONE
++# Prime
++T 655500000 7MHz 3/4 NONE QAM64 8k 1/16 NONE
++# WIN
++T 592625000 7MHz 2/3 NONE QAM64 8k 1/8 NONE
++# SC
++T 613500000 7MHz 3/4 NONE QAM64 8k 1/16 NONE
++# SBS
++T 634625000 7MHz 2/3 NONE QAM64 8k 1/8 NONE
+diff -r af23d23c278b util/scan/dvb-t/au-Bendigo
+--- /dev/null Thu Jan 01 00:00:00 1970 +0000
++++ b/util/scan/dvb-t/au-Bendigo Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,41 @@
++# Australia / Bendigo (Mt Alexandria transmitters)
++# T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
++# ABC
++T 669500000 7MHz 3/4 NONE QAM64 8k 1/16 NONE
++T 620500000 7MHz 3/4 NONE QAM64 8k 1/16 NONE
++T 572500000 7MHz 3/4 NONE QAM64 8k 1/16 NONE
++
++# Seven
++T 690500000 7MHz 3/4 NONE QAM64 8k 1/16 NONE
++T 655500000 7MHz 3/4 NONE QAM64 8k 1/16 NONE
++T 555250000 7MHz 3/4 NONE QAM64 8k 1/16 NONE
++
++# Nine
++T 576250000 7MHz 3/4 NONE QAM64 8k 1/16 NONE
++T 592500000 7MHz 3/4 NONE QAM64 8k 1/16 NONE
++
++# Ten
++T 618250000 7MHz 3/4 NONE QAM64 8k 1/16 NONE
++
++# SBS
++T 529500000 7MHz 2/3 NONE QAM64 8k 1/8 NONE
++T 634500000 7MHz 2/3 NONE QAM64 8k 1/8 NONE
++T 534250000 7MHz 2/3 NONE QAM64 8k 1/8 NONE
++
++# UNK1
++T 676500000 7MHz 3/4 NONE QAM64 8k 1/16 NONE
++# UNK2
++T 571500000 7MHz 3/4 NONE QAM64 8k 1/16 NONE
++
++T 536625000 7MHz 3/4 NONE QAM64 8k 1/16 NONE
++T 585625000 7MHz 3/4 NONE QAM64 8k 1/16 NONE
++T 564500000 7MHz 3/4 NONE QAM64 8k 1/16 NONE
++T 543500000 7MHz 3/4 NONE QAM64 8k 1/16 NONE
++T 536500000 7MHz 3/4 NONE QAM64 8k 1/16 NONE
++T 529500000 7MHz 3/4 NONE QAM64 8k 1/16 NONE
++T 205500000 7MHz 3/4 NONE QAM64 8k 1/16 NONE
++T 564500000 7MHz 3/4 NONE QAM64 8k 1/16 NONE
++T 536625000 7MHz 3/4 NONE QAM64 8k 1/16 NONE
++T 690500000 7MHz 3/4 NONE QAM64 8k 1/16 NONE
++T 711500000 7MHz 3/4 NONE QAM64 8k 1/16 NONE
++T 550500000 7MHz 3/4 NONE QAM64 8k 1/16 NONE
+diff -r af23d23c278b util/scan/dvb-t/au-Brisbane
+--- a/util/scan/dvb-t/au-Brisbane Sat Jun 20 16:47:55 2009 +0200
++++ b/util/scan/dvb-t/au-Brisbane Tue Dec 21 12:13:28 2010 +0100
+@@ -10,3 +10,5 @@
+ T 219500000 7MHz 3/4 NONE QAM64 8k 1/16 NONE
+ # SBS
+ T 585625000 7MHz 2/3 NONE QAM64 8k 1/8 NONE
++# 31 Digital
++T 599500000 7MHz 2/3 NONE QAM64 8k 1/8 NONE
+diff -r af23d23c278b util/scan/dvb-t/au-Devonport
+--- /dev/null Thu Jan 01 00:00:00 1970 +0000
++++ b/util/scan/dvb-t/au-Devonport Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,19 @@
++# Australia / Tasmania / Devonport
++# T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
++#
++# Brett S Hallett October 2009 , may not be complete !!
++#
++# ABC VHF 57
++T 730250000 7MHz 3/4 NONE QAM64 8k 1/16 NONE
++# ABC Digital 45
++T 648500000 7MHz 3/4 NONE QAM64 8k 1/16 NONE
++# SBS VHF 54
++T 709250000 7MHz 2/3 NONE QAM64 8k 1/8 NONE
++# SBS Digital 39
++T 606500000 7MHz 2/3 NONE QAM64 8k 1/8 NONE
++# SCTV
++T 613498000 7MHz 3/4 NONE QAM64 8k 1/16 NONE
++# WIN
++T 627498000 7MHz 3/4 NONE QAM64 8k 1/8 NONE
++# TDT
++T 585498000 7MHz 2/3 NONE QAM64 8k 1/8 NONE
+diff -r af23d23c278b util/scan/dvb-t/au-FraserCoast-Bundaberg
+--- /dev/null Thu Jan 01 00:00:00 1970 +0000
++++ b/util/scan/dvb-t/au-FraserCoast-Bundaberg Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,12 @@
++# Australia / QLD / Fraser Coast - Bundaberg / Mt Goonaneman
++# T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
++# ABC VHF9A
++T 205625000 7MHz 3/4 NONE QAM64 8k 1/16 NONE
++# SBS UHF28
++T 529500000 7MHz 2/3 NONE QAM64 8k 1/8 NONE
++# Seven VHF7
++T 184625000 7MHz 2/3 NONE QAM64 8k 1/16 NONE
++# WIN Wide Bay VHF10
++T 212500000 7MHz 3/4 NONE QAM64 8k 1/16 NONE
++# Southern Cross Ten VHF9
++T 198525000 7MHz 3/4 NONE QAM64 8k 1/16 NONE
+diff -r af23d23c278b util/scan/dvb-t/au-Goulburn-Rocky_Hill
+--- /dev/null Thu Jan 01 00:00:00 1970 +0000
++++ b/util/scan/dvb-t/au-Goulburn-Rocky_Hill Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,19 @@
++# Australia / Goulburn / Rocky Hill
++#
++# Scanned 17/10/2009 - Alex Ferrara (alex@receptiveit.com.au)
++
++# T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
++# ABC - netid (4112) tid (547) offset (+125Khz)
++T 725625000 7MHz 3/4 NONE QAM64 8k 1/16 NONE
++
++# SBS - netid (12802) tid (848) offset (+125Khz)
++T 746625000 7MHz 2/3 NONE QAM64 8k 1/8 NONE
++
++# WIN - netid (12915) tid (12922) offset (+125Khz)
++T 767625000 7MHz 3/4 NONE QAM64 8k 1/16 NONE
++
++# Prime - netid (12929) tid (2462) offset (+125Khz)
++T 788625000 7MHz 3/4 NONE QAM64 8k 1/16 NONE
++
++# TEN - netid (12812) tid (2055) offset (0Khz)
++T 809500000 7MHz 3/4 NONE QAM64 8k 1/16 NONE
+diff -r af23d23c278b util/scan/dvb-t/au-Hervey_Bay-Ghost_Hill
+--- /dev/null Thu Jan 01 00:00:00 1970 +0000
++++ b/util/scan/dvb-t/au-Hervey_Bay-Ghost_Hill Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,16 @@
++# Australia / Hervey Bay / Ghost Hill
++#
++# T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
++#
++# ABC UHF56
++T 725500000 7MHz 3/4 NONE QAM64 8k 1/16 NONE
++# Seven UHF59
++T 746500000 7MHz 3/4 NONE QAM64 8k 1/16 NONE
++# Nine UHF62
++T 767625000 7MHz 3/4 NONE QAM64 8k 1/16 NONE
++# Ten UHF68
++T 809500000 7MHz 3/4 NONE QAM64 8k 1/16 NONE
++# SBS UHF28
++T 529500000 7MHz 2/3 NONE QAM64 8k 1/8 NONE
++# SBS UHF34
++T 704500000 7MHz 2/3 NONE QAM64 8k 1/8 NONE
+diff -r af23d23c278b util/scan/dvb-t/au-SunshineCoast
+--- a/util/scan/dvb-t/au-SunshineCoast Sat Jun 20 16:47:55 2009 +0200
++++ b/util/scan/dvb-t/au-SunshineCoast Tue Dec 21 12:13:28 2010 +0100
+@@ -3,7 +3,7 @@
+ # SBS36 SBS ***
+ T 585625000 7MHz 2/3 NONE QAM64 8k 1/8 NONE
+ # TNQ47 10 ***
+-T 662625000 7MHz 2/3 NONE QAM64 8k 1/8 NONE
++T 662625000 7MHz 3/4 NONE QAM64 8k 1/8 NONE
+ # ABQ62 ABC ***
+ T 767625000 7MHz 3/4 NONE QAM64 8k 1/16 NONE
+ # STQ65 7 ***
+diff -r af23d23c278b util/scan/dvb-t/au-Sutherland
+--- /dev/null Thu Jan 01 00:00:00 1970 +0000
++++ b/util/scan/dvb-t/au-Sutherland Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,20 @@
++# Australia / Sutherland
++#
++# Australia modulation params:
++# - http://www.dba.org.au/index.asp?sectionID=120
++#
++# T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
++#
++# North (Broadcast Site Escarpment Road BROKERS NOSE)
++# - http://www.dba.org.au/index.asp?query=true&sectionID=22&recLocation=Wollongong+%2D+North
++#
++#Channel 7 stations
++T 177500000 7MHz 3/4 NONE QAM64 8k 1/16 NONE
++#Channel 9 bundle
++# T 191500000 7MHz AUTO AUTO AUTO AUTO AUTO AUTO
++#One and Channel 10
++T 219500000 7MHz 3/4 NONE QAM64 8k 1/16 NONE
++#Aunty
++T 226500000 7MHz 3/4 NONE QAM64 8k 1/16 NONE
++#SBS
++T 571500000 7MHz 3/4 NONE QAM64 8k 1/16 NONE
+diff -r af23d23c278b util/scan/dvb-t/be-All
+--- /dev/null Thu Jan 01 00:00:00 1970 +0000
++++ b/util/scan/dvb-t/be-All Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,8 @@
++# Belgium, whole country
++# Created from http://nl.wikipedia.org/wiki/DVB-T-frequenties
++# T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
++T 482000000 8MHz 1/2 NONE QAM64 8k 1/4 NONE
++T 506000000 8MHz 1/2 NONE QAM64 8k 1/4 NONE
++T 666000000 8MHz 3/4 NONE QAM16 8k 1/4 NONE
++T 754000000 8MHz 3/4 NONE QAM16 8k 1/4 NONE
++T 834000000 8MHz 3/4 NONE QAM16 8k 1/4 NONE
+diff -r af23d23c278b util/scan/dvb-t/be-Brussels
+--- a/util/scan/dvb-t/be-Brussels Sat Jun 20 16:47:55 2009 +0200
++++ /dev/null Thu Jan 01 00:00:00 1970 +0000
+@@ -1,5 +0,0 @@
+-# Brussels - Belgium (Transmitters of the RTBF and the VRT)
+-# T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
+-T 754000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE # RTBF
+-T 746000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE # BE-TV
+-T 482000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE # VRT
+diff -r af23d23c278b util/scan/dvb-t/be-Libramont
+--- a/util/scan/dvb-t/be-Libramont Sat Jun 20 16:47:55 2009 +0200
++++ /dev/null Thu Jan 01 00:00:00 1970 +0000
+@@ -1,10 +0,0 @@
+-# Libramont - Belgique
+-# T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
+-# Canal 7 191.5 MHz M6
+-# Canal 24 498.0 MHz RTL-TVI Club-RTL Plug-TV RTL 4,5,7
+-# Canal 27 522.0 MHz RTL Lux, den 2ten RTL
+-# Canal 56 834.0 MHz RTBF 1,2,3 + radio
+-T 191500000 7MHz 1/2 NONE QAM64 8k 1/8 NONE
+-T 498000000 8MHz 1/2 NONE QAM64 8k 1/16 NONE
+-T 522000000 8MHz 1/2 NONE QAM64 8k 1/16 NONE
+-T 834000000 8MHz 1/2 NONE QAM64 8k 1/4 NONE
+diff -r af23d23c278b util/scan/dvb-t/be-Schoten
+--- a/util/scan/dvb-t/be-Schoten Sat Jun 20 16:47:55 2009 +0200
++++ /dev/null Thu Jan 01 00:00:00 1970 +0000
+@@ -1,3 +0,0 @@
+-# Schoten-Antwerpen - Belgie
+-# T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
+-T 778000000 8MHz 1/2 NONE QAM64 8k 1/4 NONE
+diff -r af23d23c278b util/scan/dvb-t/be-St_Pieters_Leeuw
+--- a/util/scan/dvb-t/be-St_Pieters_Leeuw Sat Jun 20 16:47:55 2009 +0200
++++ /dev/null Thu Jan 01 00:00:00 1970 +0000
+@@ -1,3 +0,0 @@
+-# St.-Pieters-Leeuw - Belgie
+-# T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
+-T 482000000 8MHz 1/2 NONE QAM64 8k 1/4 NONE
+diff -r af23d23c278b util/scan/dvb-t/be-Tournai
+--- a/util/scan/dvb-t/be-Tournai Sat Jun 20 16:47:55 2009 +0200
++++ /dev/null Thu Jan 01 00:00:00 1970 +0000
+@@ -1,3 +0,0 @@
+-# Tournai - Belgique
+-# T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
+-T 754000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
+diff -r af23d23c278b util/scan/dvb-t/ch-All
+--- a/util/scan/dvb-t/ch-All Sat Jun 20 16:47:55 2009 +0200
++++ b/util/scan/dvb-t/ch-All Tue Dec 21 12:13:28 2010 +0100
+@@ -19,6 +19,7 @@
+ T 682000000 8MHz 5/6 NONE QAM16 8k 1/4 NONE
+ T 690000000 8MHz 5/6 NONE QAM16 8k 1/4 NONE
+ T 698000000 8MHz 5/6 NONE QAM16 8k 1/4 NONE
++T 706000000 8MHz 1/2 NONE QAM16 8k 1/4 NONE
+ T 714000000 8MHz 5/6 NONE QAM16 8k 1/4 NONE
+ T 722000000 8MHz 5/6 NONE QAM16 8k 1/4 NONE
+ T 722000000 8MHz 5/6 NONE QAM16 8k 1/8 NONE
+diff -r af23d23c278b util/scan/dvb-t/ch-Geneva
+--- /dev/null Thu Jan 01 00:00:00 1970 +0000
++++ b/util/scan/dvb-t/ch-Geneva Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,16 @@
++# Switzerland, whole country
++# Created from http://www.broadcast.ch/portal.aspx?pid=705
++# and http://www.broadcast.ch/data_program_dvbt.aspx
++# T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
++# freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
++T 570166000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
++T 578000000 8MHz 5/6 NONE QAM16 8k 1/4 NONE
++T 658166000 8MHz 3/4 NONE QAM64 8k 1/8 NONE
++T 666166000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
++T 682166000 8MHz 3/4 NONE QAM64 8k 1/8 NONE
++T 706000000 8MHz 1/2 NONE QAM16 8k 1/4 NONE
++T 746166000 8MHz 3/4 NONE QAM64 8k 1/8 NONE
++T 770166000 8MHz 3/4 NONE QAM64 8k 1/8 NONE
++T 794166000 8MHz 3/4 NONE QAM64 8k 1/8 NONE
++T 818166000 8MHz 3/4 NONE QAM64 8k 1/8 NONE
++T 850166000 8MHz 3/4 NONE QAM64 8k 1/8 NONE
+diff -r af23d23c278b util/scan/dvb-t/cz-All
+--- /dev/null Thu Jan 01 00:00:00 1970 +0000
++++ b/util/scan/dvb-t/cz-All Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,41 @@
++# Czech Republic, whole country
++# Created from http://www.digizone.cz/texty/mapy-pokryti-multiplex-1-ceska-televize/
++# and http://www.digizone.cz/texty/mapy-pokryti-multiplex-2-radiokomunikace/
++# and http://www.digizone.cz/texty/mapy-pokryti-multiplex-3-czech-digital-group/
++# and http://www.digizone.cz/texty/mapy-pokryti-multiplex-4-telefonica-o2/
++# T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
++T 482000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
++T 506000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
++T 538000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
++T 546000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
++T 562000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
++T 570000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
++T 578000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
++T 586000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
++T 594000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
++T 602000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
++T 618000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
++T 626000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
++T 634000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
++T 642000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE
++T 650000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
++T 658000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE
++T 666000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE
++T 674000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE
++T 690000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
++T 698000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
++T 706000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
++T 714000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
++T 722000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
++T 730000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
++T 738000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
++T 746000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
++T 770000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
++T 778000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
++T 786000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
++T 794000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
++T 802000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE
++T 810000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE
++T 818000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE
++T 826000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE
++T 834000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
+diff -r af23d23c278b util/scan/dvb-t/cz-Brno
+--- a/util/scan/dvb-t/cz-Brno Sat Jun 20 16:47:55 2009 +0200
++++ /dev/null Thu Jan 01 00:00:00 1970 +0000
+@@ -1,10 +0,0 @@
+-# DVB-T Brno (Brno, Czech Republic)
+-# T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
+-# MUX 1 Ceska televize
+-T 506000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
+-# MUX 2 Ceske radiokomunikace
+-T 626000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
+-# MUX 3 Czech Digital Group
+-T 778000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
+-# MUX 4 Telefonica O2
+-T 818000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE
+diff -r af23d23c278b util/scan/dvb-t/cz-Domazlice
+--- a/util/scan/dvb-t/cz-Domazlice Sat Jun 20 16:47:55 2009 +0200
++++ /dev/null Thu Jan 01 00:00:00 1970 +0000
+@@ -1,3 +0,0 @@
+-# DVB-T Domažlice (Domažlice, Czech Republic)
+-# T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
+-T 610000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE
+diff -r af23d23c278b util/scan/dvb-t/cz-Klet
+--- a/util/scan/dvb-t/cz-Klet Sat Jun 20 16:47:55 2009 +0200
++++ /dev/null Thu Jan 01 00:00:00 1970 +0000
+@@ -1,4 +0,0 @@
+-# DVB-T Ceske Budejovice (Klet, Czech Republic)
+-# T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
+-# CRa - Ceske radiokomunikace, TX Klet
+-T 698000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
+diff -r af23d23c278b util/scan/dvb-t/cz-Ostrava
+--- a/util/scan/dvb-t/cz-Ostrava Sat Jun 20 16:47:55 2009 +0200
++++ /dev/null Thu Jan 01 00:00:00 1970 +0000
+@@ -1,3 +0,0 @@
+-# DVB-T Ostrava (Ostrava, Czech Republic)
+-# T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
+-T 618000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE
+diff -r af23d23c278b util/scan/dvb-t/cz-Plzen
+--- a/util/scan/dvb-t/cz-Plzen Sat Jun 20 16:47:55 2009 +0200
++++ /dev/null Thu Jan 01 00:00:00 1970 +0000
+@@ -1,8 +0,0 @@
+-# DVB-T Plzen (Pilsen, Czech Republic)
+-# T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
+-# MUX 1 Ceska televize
+-T 578000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
+-# MUX 2 Ceske Radiokomunikace
+-T 690000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
+-# MUX 3 Czech Digital Group
+-T 722000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
+diff -r af23d23c278b util/scan/dvb-t/cz-Praha
+--- a/util/scan/dvb-t/cz-Praha Sat Jun 20 16:47:55 2009 +0200
++++ /dev/null Thu Jan 01 00:00:00 1970 +0000
+@@ -1,7 +0,0 @@
+-# DVB-T Praha (Prague, Czech Republic)
+-# T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
+-T 634000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
+-T 674000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
+-T 730000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
+-T 778000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
+-T 818000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE
+diff -r af23d23c278b util/scan/dvb-t/de-Baden-Wuerttemberg
+--- a/util/scan/dvb-t/de-Baden-Wuerttemberg Sat Jun 20 16:47:55 2009 +0200
++++ b/util/scan/dvb-t/de-Baden-Wuerttemberg Tue Dec 21 12:13:28 2010 +0100
+@@ -1,20 +1,19 @@
+ # DVB-T Baden-Württemberg
+ # Created from http://www.ueberallfernsehen.de/data/senderliste.pdf
+ # T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
+-T 482000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH22: ZDF, 3sat, KiKa / ZDFdokukanal, ZDFinfokanal
+-T 490000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH23: ZDF, 3sat, KiKa / ZDFdokukanal, ZDFinfokanal
++T 474000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH21: ZDF, 3sat, KiKa / ZDFneo, ZDFinfokanal
++T 482000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH22: ZDF, 3sat, KiKa / ZDFneo, ZDFinfokanal
++T 490000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH23: ZDF, 3sat, KiKa / ZDFneo, ZDFinfokanal
+ T 514000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH26: Das Erste, arte, Phoenix, EinsPlus
+-T 522000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH27: ZDF, 3sat, KiKa / ZDFdokukanal, ZDFinfokanal
+-T 570000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH33: ZDF, 3sat, KiKa / ZDFdokukanal, ZDFinfokanal
+-T 618000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH39: SWR-BW, BR, hr, WDR
+-T 626000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH40: SWR-BW, BR, hr, WDR
+-T 634000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH41: SWR-BW, BR, hr, WDR
++T 570000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH33: ZDF, 3sat, KiKa / ZDFneo, ZDFinfokanal
++T 618000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH39: SWR-BW, Bayerisches Fernsehen, hr, WDR
++T 626000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH40: SWR-BW, Bayerisches Fernsehen, hr, WDR
++T 634000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH41: SWR-BW, Bayerisches Fernsehen, hr, WDR
+ T 650000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH43: Das Erste, arte, Phoenix, EinsPlus
+-T 698000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH49: SWR-BW, BR, hr, WDR
+-T 706000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH50: Das Erste, arte, Phoenix, EinsPlus
+- # CH50: SWR-BW, BR, hr, WDR
++T 666000000 8MHz 3/4 NONE QAM16 8k 1/8 NONE # CH45: RTL, RTL 2, Super RTL, VOX, RTL Crime, Passion [Sendenorm: MPEG-4]
++T 698000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH49: SWR-BW, Bayerisches Fernsehen, hr, WDR
++T 706000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH50: SWR-BW, Bayerisches Fernsehen, hr, WDR
+ T 722000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH52: Das Erste, arte, Phoenix, EinsPlus
+-T 730000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH53: Das Erste, arte, Phoenix, EinsPlus
+- # CH53: SWR-BW, BR, hr, WDR
+ T 738000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH54: Das Erste, arte, Phoenix, EinsPlus
++T 778000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH59: Das Erste, arte, Phoenix, EinsPlus
+ T 786000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH60: Das Erste, arte, Phoenix, EinsPlus
+diff -r af23d23c278b util/scan/dvb-t/de-Bayern
+--- a/util/scan/dvb-t/de-Bayern Sat Jun 20 16:47:55 2009 +0200
++++ b/util/scan/dvb-t/de-Bayern Tue Dec 21 12:13:28 2010 +0100
+@@ -1,40 +1,40 @@
+ # DVB-T Bayern
+ # Created from http://www.ueberallfernsehen.de/data/senderliste.pdf
+ # T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
+-T 184500000 7MHz 3/4 NONE QAM16 8k 1/4 NONE # CH06: Das Erste, arte, Phoenix, EinsPlus
+ T 191500000 7MHz 3/4 NONE QAM16 8k 1/4 NONE # CH07: Das Erste, arte, Phoenix, EinsPlus
+ T 212500000 7MHz 3/4 NONE QAM16 8k 1/4 NONE # CH10: Das Erste, arte, Phoenix, EinsPlus
+-T 490000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH23: ZDF, 3sat, KiKa / ZDFdokukanal, ZDFinfokanal
+-T 506000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH25: BR, BRalpha, SWR, Das Erste
+- # CH25: ZDF, 3sat, KiKa / ZDFdokukanal, ZDFinfokanal
+-T 522000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH27: BR, BRalpha, SWR, Das Erste
+-T 530000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH28: BR, BRalpha, SWR, Das Erste
+- # CH28: ZDF, 3sat, KiKa / ZDFdokukanal, ZDFinfokanal
++T 490000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH23: ZDF, 3sat, KiKa / ZDFneo, ZDFinfokanal
++T 506000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH25: Bayerisches Fernsehen, BR-alpha, SWR, EinsExtra
++ # CH25: ZDF, 3sat, KiKa / ZDFneo, ZDFinfokanal
++T 522000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH27: Bayerisches Fernsehen, BR-alpha, SWR, EinsExtra
++T 530000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH28: Bayerisches Fernsehen, BR-alpha, SWR, EinsExtra
++ # CH28: ZDF, 3sat, KiKa / ZDFneo, ZDFinfokanal
+ T 538000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH29: Das Erste, arte, Phoenix, EinsPlus
+ T 546000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH30: Das Erste, arte, Phoenix, EinsPlus
+-T 570000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH33: ZDF, 3sat, KiKa / ZDFdokukanal, ZDFinfokanal
+-T 578000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH34: RTL, RTL II, Super RTL, VOX
+- # CH34: ZDF, 3sat, KiKa / ZDFdokukanal, ZDFinfokanal
+-T 586000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH35: ZDF, 3sat, KiKa / ZDFdokukanal, ZDFinfokanal
++T 570000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH33: ZDF, 3sat, KiKa / ZDFneo, ZDFinfokanal
++T 578000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH34: RTL, RTL 2, Super RTL, VOX
++ # CH34: ZDF, 3sat, KiKa / ZDFneo, ZDFinfokanal
++T 586000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH35: ZDF, 3sat, KiKa / ZDFneo, ZDFinfokanal
+ T 594000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH36: Das Erste, arte, Phoenix, EinsPlus
+-T 626000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH40: BR, BRalpha, hr, mdr
++T 618000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH39: Bayerisches Fernsehen, BR-alpha, SWR, EinsExtra
++T 626000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH40: Bayerisches Fernsehen, BR-alpha, MDR, hr
+ # CH40: Das Erste, arte, Phoenix, EinsPlus
+-T 642000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH42: ZDF, 3sat, KiKa / ZDFdokukanal, ZDFinfokanal
+-T 658000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH44: ZDF, 3sat, KiKa / ZDFdokukanal, ZDFinfokanal
+-T 666000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH45: BR, BRalpha, hr, mdr
++T 642000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH42: ZDF, 3sat, KiKa / ZDFneo, ZDFinfokanal
++T 658000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH44: ZDF, 3sat, KiKa / ZDFneo, ZDFinfokanal
++T 666000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH45: Bayerisches Fernsehen, BR-alpha, MDR, hr
+ # CH45: Das Erste, arte, Phoenix, EinsPlus
+-T 674000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH46: BR, BRalpha, SWR, Das Erste
+- # CH46: BR, BRalpha, hr, mdr
+-T 682000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH47: BR, BRalpha, hr, mdr
++T 674000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH46: Bayerisches Fernsehen, BR-alpha, MDR, hr
++ # CH46: Bayerisches Fernsehen, BR-alpha, SWR, EinsExtra
++T 682000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH47: Bayerisches Fernsehen, BR-alpha, MDR, hr
+ # CH47: Das Erste, arte, Phoenix, EinsPlus
+-T 690000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH48: Pro7, Sat.1, Kabel1, N24
+-T 722000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH52: Pro7, Sat.1, Kabel1, N24
+-T 730000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH53: BR, BRalpha, SWR, Das Erste
+- # CH53: ZDF, 3sat, KiKa / ZDFdokukanal, ZDFinfokanal
+-T 738000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH54: http://www.digitalfernsehen.de/news/news_769785.html
++T 690000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH48: Sat.1, ProSieben, Kabel1, N24
++T 698000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH49: Das Erste, arte, Phoenix, EinsPlus
++T 722000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH52: ProSieben, Sat.1, Kabel1, N24
++T 730000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH53: Bayerisches Fernsehen, BR-alpha, SWR, EinsExtra
++ # CH53: ZDF, 3sat, KiKa / ZDFneo, ZDFinfokanal
++T 738000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH54: Das Erste, arte, Phoenix, EinsPlus
+ T 746000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH55: Das Erste, arte, Phoenix, EinsPlus
+-T 754000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH56: BR, BRalpha, SWR, Das Erste
+-T 770000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH58: Das Erste, arte, Phoenix, EinsPlus
+-T 786000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH60: Tele 5, Eurosport, MonA, Franken Fernsehen
+-T 834000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH66: RTL, RTL II, Super RTL, VOX
+- # CH66: Tele 5, Eurosport, HSE 24, münchen.tv
++T 754000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH56: Bayerisches Fernsehen, BR-alpha, SWR, EinsExtra
++T 786000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH60: Tele 5, Channel21/ Euronews, Bibel TV, HSE 24, Franken Fernsehen
++T 834000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH66: RTL, RTL 2, Super RTL, VOX
++ # CH66: Tele 5, Channel21/ Euronews, Bibel TV, HSE 24, münchen.tv
+diff -r af23d23c278b util/scan/dvb-t/de-Berlin
+--- a/util/scan/dvb-t/de-Berlin Sat Jun 20 16:47:55 2009 +0200
++++ b/util/scan/dvb-t/de-Berlin Tue Dec 21 12:13:28 2010 +0100
+@@ -1,11 +1,12 @@
+ # DVB-T Berlin
+ # Created from http://www.ueberallfernsehen.de/data/senderliste.pdf
+ # T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
+-T 177500000 7MHz 3/4 NONE QAM16 8k 1/8 NONE # CH05: HSE 24/MONA, FAB, WDR, SWR
++T 177500000 7MHz 3/4 NONE QAM16 8k 1/8 NONE # CH05: Tele 5, HSE 24, WDR, SWR (BW / RP)
+ T 191500000 7MHz 2/3 NONE QAM16 8k 1/8 NONE # CH07: MDR, NDR, arte
+-T 506000000 8MHz 2/3 NONE QAM16 8k 1/8 NONE # CH25: RTL, RTL II, Super RTL, VOX
++T 506000000 8MHz 2/3 NONE QAM16 8k 1/8 NONE # CH25: RTL, RTL 2, Super RTL, VOX
+ T 522000000 8MHz 2/3 NONE QAM16 8k 1/8 NONE # CH27: Das Erste, RBB, Phoenix, EinsExtra
+-T 570000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH33: ZDF, 3sat, KiKa / ZDFdokukanal, ZDFinfokanal
+-T 658000000 8MHz 2/3 NONE QAM16 8k 1/8 NONE # CH44: Pro7, Sat.1, Kabel1, N24
+-T 754000000 8MHz 2/3 NONE QAM16 8k 1/8 NONE # CH56: Eurosport, TV.B, DSF, Neun live
+-T 778000000 8MHz 2/3 NONE QAM16 8k 1/8 NONE # CH59: n-tv, EuroNews, + 26 Radioprogramme
++T 570000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH33: ZDF, 3sat, KiKa / ZDFneo, ZDFinfokanal
++T 618000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE # CH39: Das Vierte, Bibel.TV, QVC, Bayerisches Fernsehen
++T 658000000 8MHz 2/3 NONE QAM16 8k 1/8 NONE # CH44: ProSieben, Sat.1, Kabel1, N24
++T 754000000 8MHz 2/3 NONE QAM16 8k 1/8 NONE # CH56: Eurosport, TV.B, Sport1, 9Live
++T 778000000 8MHz 2/3 NONE QAM16 8k 1/8 NONE # CH59: n-tv, EuroNews / Channel 21 Shop, PLACE2BE + 8 Radioprogramme
+diff -r af23d23c278b util/scan/dvb-t/de-Brandenburg
+--- a/util/scan/dvb-t/de-Brandenburg Sat Jun 20 16:47:55 2009 +0200
++++ b/util/scan/dvb-t/de-Brandenburg Tue Dec 21 12:13:28 2010 +0100
+@@ -1,7 +1,7 @@
+ # DVB-T Brandenburg
+ # Created from http://www.ueberallfernsehen.de/data/senderliste.pdf
+ # T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
+-T 570000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH33: ZDF, 3sat, KiKa / ZDFdokukanal, ZDFinfokanal
+-T 594000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH36: ZDF, 3sat, KiKa / ZDFdokukanal, ZDFinfokanal
++T 570000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH33: ZDF, 3sat, KiKa / ZDFneo, ZDFinfokanal
++T 594000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH36: ZDF, 3sat, KiKa / ZDFneo, ZDFinfokanal
+ T 730000000 8MHz 3/4 NONE QAM16 8k 1/4 NONE # CH53: Das Erste, RBB, Phoenix, EinsExtra
+ T 762000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH57: MDR, NDR, arte
+diff -r af23d23c278b util/scan/dvb-t/de-Bremen
+--- a/util/scan/dvb-t/de-Bremen Sat Jun 20 16:47:55 2009 +0200
++++ b/util/scan/dvb-t/de-Bremen Tue Dec 21 12:13:28 2010 +0100
+@@ -3,7 +3,7 @@
+ # T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
+ T 482000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH22: Das Erste (RB), RB TV (NDR NDS), arte, Phoenix
+ T 538000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH29: NDR NDS, WDR/NDR SH, MDR/NDR MVP, HR/NDR HH
+-T 562000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH32: ZDF, 3sat, KiKa / ZDFdokukanal, ZDFinfokanal
+-T 642000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH42: RTL, RTL II, Super RTL, VOX
+-T 666000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH45: Tele 5, Neun live, Eurosport, MONA/DMAX
+-T 698000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH49: Pro7, Sat.1, Kabel1, N24
++T 562000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH32: ZDF, 3sat, KiKa / ZDFneo, ZDFinfokanal
++T 642000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH42: RTL, RTL 2, Super RTL, VOX
++T 666000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH45: Tele 5, 9Live, Eurosport, MONA / Channel 21
++T 698000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH49: ProSieben, Sat.1, Kabel1, N24
+diff -r af23d23c278b util/scan/dvb-t/de-Hamburg
+--- a/util/scan/dvb-t/de-Hamburg Sat Jun 20 16:47:55 2009 +0200
++++ b/util/scan/dvb-t/de-Hamburg Tue Dec 21 12:13:28 2010 +0100
+@@ -1,16 +1,12 @@
+ # DVB-T Hamburg
+ # Created from http://www.ueberallfernsehen.de/data/senderliste.pdf
++# CH36 entry from http://www.dvb-t-nord.de/programme/index.html
+ # T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
+-T 490000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH23: ZDF, 3sat, KiKa / ZDFdokukanal, ZDFinfokanal
+-T 490000000 8MHz 2/3 NONE QAM16 8k 1/8 NONE # CH23: ZDF, 3sat, KiKa / ZDFdokukanal, ZDFinfokanal
+-T 530000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH28: NDR SH, WDR/NDR NDS, MDR/NDR MVP, BR/NDR HH
+-T 546000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH30: Pro7, Sat.1, Kabel1, N24
+-T 546000000 8MHz 2/3 NONE QAM16 8k 1/8 NONE # CH30: Pro7, Sat.1, Kabel1, N24
++T 490000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH23: ZDF, 3sat, KiKa / ZDFneo, ZDFinfokanal
++T 530000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH28: NDR SH, WDR/NDR NDS, MDR/NDR MVP, BR Fernsehen/NDR HH
++T 546000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH30: ProSieben, Sat.1, Kabel1, N24
+ T 570000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH33: Das Erste, arte, Phoenix, EinsExtra
+-T 570000000 8MHz 2/3 NONE QAM16 8k 1/8 NONE # CH33: Das Erste, arte, Phoenix, EinsExtra
+-T 626000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH40: RTL, RTL II, Super RTL, VOX
+-T 626000000 8MHz 2/3 NONE QAM16 8k 1/8 NONE # CH40: RTL, RTL II, Super RTL, VOX
+-T 674000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH46: Neun live, HH1, BibelTV, Eurosport
+-T 674000000 8MHz 2/3 NONE QAM16 8k 1/8 NONE # CH46: Neun live, HH1, BibelTV, Eurosport
+-T 738000000 8MHz 1/2 NONE QAM64 8k 1/8 NONE # CH54: NDR HH, WDR/NDR NDS, MDR/NDR MVP, BR/NDR SH
+-T 738000000 8MHz 3/4 NONE QAM16 8k 1/8 NONE # CH54: NDR HH, WDR/NDR NDS, MDR/NDR MVP, BR/NDR SH
++T 594000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH36: TELE 5, QVC, DAS VIERTE, Channel 21 / Euronews
++T 626000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH40: RTL, RTL 2, Super RTL, VOX
++T 674000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH46: 9Live, HH1, Bibel.TV, Eurosport
++T 738000000 8MHz 1/2 NONE QAM64 8k 1/8 NONE # CH54: NDR HH, WDR/NDR NDS, MDR/NDR MVP, BR Fernsehen/NDR SH
+diff -r af23d23c278b util/scan/dvb-t/de-Hessen
+--- a/util/scan/dvb-t/de-Hessen Sat Jun 20 16:47:55 2009 +0200
++++ b/util/scan/dvb-t/de-Hessen Tue Dec 21 12:13:28 2010 +0100
+@@ -1,19 +1,19 @@
+ # DVB-T Hessen
+ # Created from http://www.ueberallfernsehen.de/data/senderliste.pdf
+ # T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
+-T 198500000 7MHz 2/3 NONE QAM16 8k 1/4 NONE # CH08: Phoenix, BR, SWR-RP
+-T 474000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH21: ZDF, 3sat, KiKa / ZDFdokukanal, ZDFinfokanal
+-T 482000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH22: ZDF, 3sat, KiKa / ZDFdokukanal, ZDFinfokanal
+-T 498000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH24: Phoenix, BR, SWR-RP, WDR
+-T 506000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH25: ZDF, 3sat, KiKa / ZDFdokukanal, ZDFinfokanal
++T 198500000 7MHz 2/3 NONE QAM16 8k 1/4 NONE # CH08: Phoenix, Bayerisches Fernsehen, SWR-RP
++T 474000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH21: ZDF, 3sat, KiKa / ZDFneo, ZDFinfokanal
++T 482000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH22: ZDF, 3sat, KiKa / ZDFneo, ZDFinfokanal
++T 498000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH24: Phoenix, Bayerisches Fernsehen, SWR-RP, WDR
++T 506000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH25: ZDF, 3sat, KiKa / ZDFneo, ZDFinfokanal
+ T 562000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH32: Das Erste, hr, EinsExtra/arte
+-T 578000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH34: RTL, RTL II, Super RTL, VOX
++T 578000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH34: RTL, RTL 2, Super RTL, VOX
+ T 602000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH37: Das Erste, hr, EinsExtra/arte
+-T 618000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH39: Phoenix, BR, SWR-RP, mdr
+-T 642000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH42: ZDF, 3sat, KiKa / ZDFdokukanal, ZDFinfokanal
++T 618000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH39: Phoenix, Bayerisches Fernsehen, SWR-RP, MDR
++T 642000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH42: ZDF, 3sat, KiKa / ZDFneo, ZDFinfokanal
+ T 650000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH43: Das Erste, hr, EinsExtra/arte
+-T 722000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH52: ZDF, 3sat, KiKa / ZDFdokukanal, ZDFinfokanal
+-T 730000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH53: BR, hr, SWR-BW, WDR
+-T 738000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH54: Pro7, Sat.1, Kabel1, N24
+-T 746000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH55: Phoenix, NDR, mdr, WDR
+-T 818000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH64: Tele5, Eurosport, rheinmaintv
++T 722000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH52: ZDF, 3sat, KiKa / ZDFneo, ZDFinfokanal
++T 730000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH53: Bayerisches Fernsehen, hr, SWR-BW, WDR
++T 738000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH54: ProSieben, Sat.1, Kabel1, N24
++T 746000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH55: Phoenix, NDR, MDR, WDR
++T 818000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH64: Tele5, Eurosport, rheinmaintv, Bibel.TV
+diff -r af23d23c278b util/scan/dvb-t/de-Mecklenburg-Vorpommern
+--- a/util/scan/dvb-t/de-Mecklenburg-Vorpommern Sat Jun 20 16:47:55 2009 +0200
++++ b/util/scan/dvb-t/de-Mecklenburg-Vorpommern Tue Dec 21 12:13:28 2010 +0100
+@@ -2,11 +2,11 @@
+ # Created from http://www.ueberallfernsehen.de/data/senderliste.pdf
+ # T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
+ T 482000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH22: Das Erste, NDR MVP, RBB, MDR/NDR SH
+-T 490000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH23: ZDF, 3sat, KiKa / ZDFdokukanal, ZDFinfokanal
++T 490000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH23: ZDF, 3sat, KiKa / ZDFneo, ZDFinfokanal
+ T 514000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH26: Das Erste, NDR MVP, RBB, MDR/NDR SH
+ T 538000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH29: Das Erste, NDR MVP, RBB, MDR/NDR SH
+ T 594000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH36: Das Erste, NDR MVP, RBB, MDR/NDR SH
+-T 626000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH40: ZDF, 3sat, KiKa / ZDFdokukanal, ZDFinfokanal
+-T 674000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH46: ZDF, 3sat, KiKa / ZDFdokukanal, ZDFinfokanal
+-T 714000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH51: ZDF, 3sat, KiKa / ZDFdokukanal, ZDFinfokanal
+-T 738000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH54: ZDF, 3sat, KiKa / ZDFdokukanal, ZDFinfokanal
++T 602000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH37: ZDF, 3sat, KiKa / ZDFneo, ZDFinfokanal
++T 626000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH40: ZDF, 3sat, KiKa / ZDFneo, ZDFinfokanal
++T 674000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH46: ZDF, 3sat, KiKa / ZDFneo, ZDFinfokanal
++T 730000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH53: ZDF, 3sat, KiKa / ZDFneo, ZDFinfokanal
+diff -r af23d23c278b util/scan/dvb-t/de-Niedersachsen
+--- a/util/scan/dvb-t/de-Niedersachsen Sat Jun 20 16:47:55 2009 +0200
++++ b/util/scan/dvb-t/de-Niedersachsen Tue Dec 21 12:13:28 2010 +0100
+@@ -5,36 +5,35 @@
+ T 482000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH22: Das Erste (RB), RB TV (NDR NDS), arte, Phoenix
+ # CH22: Das Erste, arte, Phoenix, EinsExtra
+ # CH22: NDR NDS, WDR/NDR SH, MDR/NDR MVP, HR/NDR HH
+-T 490000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH23: ZDF, 3sat, KiKa / ZDFdokukanal, ZDFinfokanal
+-T 498000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH24: RTL, RTL II, Super RTL, VOX
+- # CH24: ZDF, 3sat, KiKa / ZDFdokukanal, ZDFinfokanal
+-T 522000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH27: ZDF, 3sat, KiKa / ZDFdokukanal, ZDFinfokanal
+-T 530000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH28: Tele 5, NICK/Comedy Central, Eurosport, MONA/DMAX
++T 490000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH23: ZDF, 3sat, KiKa / ZDFneo, ZDFinfokanal
++T 498000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH24: RTL, RTL 2, Super RTL, VOX
++T 514000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH26: Das Erste, arte, Phoenix, EinsExtra
++T 522000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH27: ZDF, 3sat, KiKa / ZDFneo, ZDFinfokanal
++T 530000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH28: Tele 5, NICK / Comedy Central, Eurosport, MONA / Channel 21
+ T 538000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH29: NDR NDS, WDR/NDR SH, MDR/NDR MVP, HR/NDR HH
+-T 562000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH32: ZDF, 3sat, KiKa / ZDFdokukanal, ZDFinfokanal
++T 554000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH31: ZDF, 3sat, KiKa / ZDFneo, ZDFinfokanal
++T 562000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH32: ZDF, 3sat, KiKa / ZDFneo, ZDFinfokanal
+ T 570000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH33: Das Erste, arte, Phoenix, EinsExtra
+-T 586000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH35: ZDF, 3sat, KiKa / ZDFdokukanal, ZDFinfokanal
++T 586000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH35: ZDF, 3sat, KiKa / ZDFneo, ZDFinfokanal
+ T 594000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH36: NDR NDS, WDR/NDR SH, MDR/NDR MVP, HR/NDR HH
+ T 602000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH37: NDR NDS, WDR/NDR SH, MDR/NDR MVP, HR/NDR HH
+-T 610000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH38: ZDF, 3sat, KiKa / ZDFdokukanal, ZDFinfokanal
++T 610000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH38: ZDF, 3sat, KiKa / ZDFneo, ZDFinfokanal
+ T 634000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH41: Das Erste, arte, Phoenix, EinsExtra
+-T 642000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH42: RTL, RTL II, Super RTL, VOX
+- # CH42: ZDF, 3sat, KiKa / ZDFdokukanal, ZDFinfokanal
++T 642000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH42: RTL, RTL 2, Super RTL, VOX
++ # CH42: ZDF, 3sat, KiKa / ZDFneo, ZDFinfokanal
+ T 650000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH43: Das Erste, arte, Phoenix, EinsExtra
+ # CH43: NDR NDS, WDR/NDR SH, MDR/NDR MVP, HR/NDR HH
+-T 658000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH44: Pro7, Sat.1, Kabel1, N24
+-T 666000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH45: Tele 5, Neun live, Eurosport, MONA/DMAX
++T 658000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH44: ProSieben, Sat.1, Kabel1, N24
++T 666000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH45: Tele 5, 9Live, Eurosport, MONA / Channel 21
+ T 674000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH46: NDR NDS, WDR/NDR SH, MDR/NDR MVP, HR/NDR HH
+ T 682000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH47: Das Erste, arte, Phoenix, EinsExtra
+ T 690000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH48: Das Erste, arte, Phoenix, EinsExtra
+-T 698000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH49: Pro7, Sat.1, Kabel1, N24
++T 698000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH49: ProSieben, Sat.1, Kabel1, N24
+ T 706000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH50: Das Erste, arte, Phoenix, EinsExtra
+-T 714000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH51: NDR NDS, WDR/NDR SH, MDR/NDR MVP, HR/NDR HH
+ T 746000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH55: Das Erste, arte, Phoenix, EinsExtra
+ T 754000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH56: NDR NDS, WDR/NDR SH, MDR/NDR MVP, HR/NDR HH
+ T 770000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH58: NDR NDS, WDR/NDR SH, MDR/NDR MVP, HR/NDR HH
+ T 778000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH59: Das Erste, arte, Phoenix, EinsExtra
+- # CH59: ZDF, 3sat, KiKa / ZDFdokukanal, ZDFinfokanal
+-T 786000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH60: Tele 5, Comedy Central, Eurosport, MONA/DMAX
+- # CH60: Tele 5, NICK/Comedy Central, Eurosport, MONA/DMAX
++ # CH59: ZDF, 3sat, KiKa / ZDFneo, ZDFinfokanal
++T 786000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH60: Tele 5, NICK / Comedy Central, Eurosport, MONA / Channel 21
+ T 826000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH65: Das Erste, arte, Phoenix, EinsExtra
+diff -r af23d23c278b util/scan/dvb-t/de-Nordrhein-Westfalen
+--- a/util/scan/dvb-t/de-Nordrhein-Westfalen Sat Jun 20 16:47:55 2009 +0200
++++ b/util/scan/dvb-t/de-Nordrhein-Westfalen Tue Dec 21 12:13:28 2010 +0100
+@@ -5,13 +5,13 @@
+ T 482000000 8MHz 2/3 NONE QAM16 8k 1/8 NONE # CH22: WDR-Wuppertal, NDR/WDR-Düsseldorf, MDR, SWR
+ T 506000000 8MHz 2/3 NONE QAM16 8k 1/8 NONE # CH25: WDR-Dortmund, NDR/WDR-Essen, MDR, SWR
+ T 514000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH26: Das Erste, arte, Phoenix, EinsFestival
+- # CH26: ZDF, 3sat, KiKa / ZDFdokukanal, ZDFinfokanal
++ # CH26: ZDF, 3sat, KiKa / ZDFneo, ZDFinfokanal
+ T 522000000 8MHz 1/2 NONE QAM64 8k 1/4 NONE # CH27: WDR-Siegen, NDR, MDR, SWR
+-T 538000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH29: RTL, RTL II, Super RTL, VOX
+-T 546000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH30: ZDF, 3sat, KiKa / ZDFdokukanal, ZDFinfokanal
++T 538000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH29: RTL, RTL 2, Super RTL, VOX
++T 546000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH30: ZDF, 3sat, KiKa / ZDFneo, ZDFinfokanal
+ T 554000000 8MHz 1/2 NONE QAM64 8k 1/4 NONE # CH31: WDR-Bielefeld, NDR/WDR-Siegen, MDR, SWR
+-T 570000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH33: ZDF, 3sat, KiKa / ZDFdokukanal, ZDFinfokanal
+-T 586000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH35: ZDF, 3sat, KiKa / ZDFdokukanal, ZDFinfokanal
++T 570000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH33: ZDF, 3sat, KiKa / ZDFneo, ZDFinfokanal
++T 586000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH35: ZDF, 3sat, KiKa / ZDFneo, ZDFinfokanal
+ T 594000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH36: CNN, Eurosport, Tele5, VIVA
+ T 602000000 8MHz 1/2 NONE QAM64 8k 1/4 NONE # CH37: WDR-Aachen, NDR/WDR-Köln, MDR, SWR
+ T 666000000 8MHz 1/2 NONE QAM64 8k 1/4 NONE # CH45: WDR-Münster, NDR/WDR-Dortmund, MDR, SWR
+@@ -20,8 +20,8 @@
+ T 698000000 8MHz 1/2 NONE QAM64 8k 1/4 NONE # CH49: WDR-Köln, MDR/WDR-Bonn, NDR/WDR-Aachen, SWR
+ T 706000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH50: Das Erste, arte, Phoenix, EinsFestival
+ T 722000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH52: CNN, Eurosport, Tele5, VIVA
+-T 730000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH53: Pro7, Sat.1, Kabel1, N24
+-T 746000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH55: Pro7, Sat.1, Kabel1, N24
++T 730000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH53: ProSieben, Sat.1, Kabel1, N24
++T 746000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH55: ProSieben, Sat.1, Kabel1, N24
+ T 762000000 8MHz 2/3 NONE QAM16 8k 1/8 NONE # CH57: WDR-Essen, NDR/WDR-Dortmund, MDR, SWR
+-T 778000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH59: ZDF, 3sat, KiKa / ZDFdokukanal, ZDFinfokanal
++T 778000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH59: ZDF, 3sat, KiKa / ZDFneo, ZDFinfokanal
+ T 786000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH60: Das Erste, arte, Phoenix, EinsFestival
+diff -r af23d23c278b util/scan/dvb-t/de-Rheinland-Pfalz
+--- a/util/scan/dvb-t/de-Rheinland-Pfalz Sat Jun 20 16:47:55 2009 +0200
++++ b/util/scan/dvb-t/de-Rheinland-Pfalz Tue Dec 21 12:13:28 2010 +0100
+@@ -1,12 +1,12 @@
+ # DVB-T Rheinland-Pfalz
+ # Created from http://www.ueberallfernsehen.de/data/senderliste.pdf
+ # T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
+-T 530000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH28: ZDF, 3sat, KiKa / ZDFdokukanal, ZDFinfokanal
+-T 546000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH30: ZDF, 3sat, KiKa / ZDFdokukanal, ZDFinfokanal
+-T 570000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH33: SWR-RP, BR, hr, WDR
+-T 658000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH44: SWR-RP, BR, hr, WDR
++T 530000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH28: ZDF, 3sat, KiKa / ZDFneo, ZDFinfokanal
++T 546000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH30: ZDF, 3sat, KiKa / ZDFneo, ZDFinfokanal
++T 570000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH33: SWR-RP, Bayerisches Fernsehen, hr, WDR
++T 658000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH44: SWR-RP, Bayerisches Fernsehen, hr, WDR
+ T 674000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH46: Das Erste, arte, Phoenix, EinsPlus
+-T 690000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH48: SWR-RP, BR, hr, WDR
++T 690000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH48: SWR-RP, Bayerisches Fernsehen, hr, WDR
+ T 754000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH56: Das Erste, arte, Phoenix, EinsPlus
+ T 762000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH57: Das Erste, arte, Phoenix, EinsPlus
+ T 786000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH60: Das Erste, arte, Phoenix, EinsPlus
+diff -r af23d23c278b util/scan/dvb-t/de-Saarland
+--- a/util/scan/dvb-t/de-Saarland Sat Jun 20 16:47:55 2009 +0200
++++ b/util/scan/dvb-t/de-Saarland Tue Dec 21 12:13:28 2010 +0100
+@@ -1,7 +1,7 @@
+ # DVB-T Saarland
+ # Created from http://www.ueberallfernsehen.de/data/senderliste.pdf
+ # T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
+-T 546000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH30: ZDF, 3sat, KiKa / ZDFdokukanal, ZDFinfokanal
++T 546000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH30: ZDF, 3sat, KiKa / ZDFneo, ZDFinfokanal
+ T 642000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH42: Das Erste, SR Fernsehen, arte, Phoenix
+-T 658000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH44: SWR-RP, BR, hr, WDR
+-T 698000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH49: SaarTV, Tele 5, QVC, BibelTV
++T 658000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH44: SWR-RP, Bayerisches Fernsehen, hr, WDR
++T 698000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH49: Tele 5, QVC, Bibel.TV, freie Kapazität
+diff -r af23d23c278b util/scan/dvb-t/de-Sachsen
+--- a/util/scan/dvb-t/de-Sachsen Sat Jun 20 16:47:55 2009 +0200
++++ b/util/scan/dvb-t/de-Sachsen Tue Dec 21 12:13:28 2010 +0100
+@@ -1,12 +1,14 @@
+ # DVB-T Sachsen
+ # Created from http://www.ueberallfernsehen.de/data/senderliste.pdf
+ # T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
+-T 205500000 7MHz 2/3 NONE QAM64 8k 1/16 NONE # CH09: MDR-SN, rbb, BR, WDR
+-T 482000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH22: ZDF, 3sat, KiKa / ZDFdokukanal, ZDFinfokanal
++T 482000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH22: ZDF, 3sat, KiKa / ZDFneo, ZDFinfokanal
+ T 498000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE # CH24: Das Erste, arte, Phoenix, EinsFestival
+ T 506000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE # CH25: Das Erste, arte, Phoenix, EinsFestival
+-T 522000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE # CH27: MDR-SN, rbb, BR, WDR
+-T 538000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE # CH29: MDR-SN, rbb, BR, WDR
+-T 562000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE # CH32: MDR-SN, rbb, BR, WDR
+-T 594000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH36: ZDF, 3sat, KiKa / ZDFdokukanal, ZDFinfokanal
++T 522000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE # CH27: MDR-SN, rbb, Bayerisches Fernsehen, WDR
++T 530000000 8MHz 3/4 NONE QAM16 8k 1/8 NONE # CH28: RTL, RTL 2, Super RTL, VOX, RTL Crime, Passion [Sendenorm: MPEG
++T 538000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE # CH29: MDR-SN, rbb, Bayerisches Fernsehen, WDR
++T 554000000 8MHz 2/3 NONE QAM16 8k 1/8 NONE # CH31: LF Leipzg.Ferns., InfoTVLeipzig, BBCWorld, Bibel.TV, RadioLeipzig, RadioHoreb
++T 562000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE # CH32: MDR-SN, rbb, Bayerisches Fernsehen, WDR
++T 594000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH36: ZDF, 3sat, KiKa / ZDFneo, ZDFinfokanal
++T 602000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE # CH37: MDR-SN, rbb, Bayerisches Fernsehen, WDR
+ T 618000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE # CH39: Das Erste, arte, Phoenix, EinsFestival
+diff -r af23d23c278b util/scan/dvb-t/de-Sachsen-Anhalt
+--- a/util/scan/dvb-t/de-Sachsen-Anhalt Sat Jun 20 16:47:55 2009 +0200
++++ b/util/scan/dvb-t/de-Sachsen-Anhalt Tue Dec 21 12:13:28 2010 +0100
+@@ -1,12 +1,12 @@
+ # DVB-T Sachsen-Anhalt
+ # Created from http://www.ueberallfernsehen.de/data/senderliste.pdf
+ # T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
+-T 482000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH22: ZDF, 3sat, KiKa / ZDFdokukanal, ZDFinfokanal
++T 482000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH22: ZDF, 3sat, KiKa / ZDFneo, ZDFinfokanal
+ T 498000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE # CH24: Das Erste, arte, Phoenix, EinsFestival
++T 530000000 8MHz 3/4 NONE QAM16 8k 1/8 NONE # CH28: RTL, RTL 2, Super RTL, VOX, RTL Crime, Passion [Sendenorm: MPEG-4]
+ T 538000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE # CH29: Das Erste, arte, Phoenix, EinsFestival
+-T 546000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH30: ZDF, 3sat, KiKa / ZDFdokukanal, ZDFinfokanal
+-T 554000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH31: ZDF, 3sat, KiKa / ZDFdokukanal, ZDFinfokanal
++T 546000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH30: ZDF, 3sat, KiKa / ZDFneo, ZDFinfokanal
++T 554000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH31: ZDF, 3sat, KiKa / ZDFneo, ZDFinfokanal
+ T 578000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE # CH34: MDR-ST, rbb, NDR, WDR
+-T 586000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE # CH35: MDR-ST, rbb, NDR, WDR
+ T 610000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE # CH38: MDR-ST, rbb, NDR, WDR
+ T 634000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE # CH41: Das Erste, arte, Phoenix, EinsFestival
+diff -r af23d23c278b util/scan/dvb-t/de-Schleswig-Holstein
+--- a/util/scan/dvb-t/de-Schleswig-Holstein Sat Jun 20 16:47:55 2009 +0200
++++ b/util/scan/dvb-t/de-Schleswig-Holstein Tue Dec 21 12:13:28 2010 +0100
+@@ -1,18 +1,18 @@
+ # DVB-T Schleswig-Holstein
+ # Created from http://www.ueberallfernsehen.de/data/senderliste.pdf
+ # T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
+-T 474000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH21: ZDF, 3sat, KiKa / ZDFdokukanal, ZDFinfokanal
+-T 490000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH23: ZDF, 3sat, KiKa / ZDFdokukanal, ZDFinfokanal
+-T 514000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH26: NDR SH, WDR/NDR NDS, MDR/NDR MVP, BR/NDR HH
+-T 530000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH28: NDR SH, WDR/NDR NDS, MDR/NDR MVP, BR/NDR HH
+-T 546000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH30: Pro7, Sat.1, Kabel1, N24
+-T 554000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH31: ZDF, 3sat, KiKa / ZDFdokukanal, ZDFinfokanal
++T 474000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH21: ZDF, 3sat, KiKa / ZDFneo, ZDFinfokanal
++T 490000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH23: ZDF, 3sat, KiKa / ZDFneo, ZDFinfokanal
++T 498000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH24: NDR SH, WDR/NDR NDS, MDR/NDR MVP, BR Fernsehen/NDR HH
++T 514000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH26: Das Erste, arte, Phoenix, EinsExtra
++T 530000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH28: NDR SH, WDR/NDR NDS, MDR/NDR MVP, BR Fernsehen/NDR HH
++T 546000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH30: ProSieben, Sat.1, Kabel1, N24
++T 554000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH31: ZDF, 3sat, KiKa / ZDFneo, ZDFinfokanal
+ T 570000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH33: Das Erste, arte, Phoenix, EinsExtra
+-T 586000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH35: Pro7, Sat.1, Kabel1, N24
+-T 618000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH39: NDR SH, WDR/NDR NDS, MDR/NDR MVP, BR/NDR HH
+-T 626000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH40: RTL, RTL II, Super RTL, VOX
+-T 666000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH45: RTL, RTL II, Super RTL, VOX
++T 586000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH35: ProSieben, Sat.1, Kabel1, N24
++T 618000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH39: NDR SH, WDR/NDR NDS, MDR/NDR MVP, BR Fernsehen/NDR HH
++T 626000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH40: RTL, RTL 2, Super RTL, VOX
++T 666000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH45: RTL, RTL 2, Super RTL, VOX
+ T 682000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH47: Das Erste, arte, Phoenix, EinsExtra
+-T 762000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH57: Neun live, Tele 5, Eurosport, MONA/DMAX
+-T 778000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH59: Neun live, Tele 5, Eurosport, MONA/DMAX
+-T 786000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH60: Das Erste, arte, Phoenix, EinsExtra
++T 762000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH57: 9Live, Tele 5, Eurosport, Bibel.TV
++T 778000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH59: 9Live, Tele 5, Eurosport, Bibel.TV
+diff -r af23d23c278b util/scan/dvb-t/de-Thueringen
+--- a/util/scan/dvb-t/de-Thueringen Sat Jun 20 16:47:55 2009 +0200
++++ b/util/scan/dvb-t/de-Thueringen Tue Dec 21 12:13:28 2010 +0100
+@@ -2,9 +2,9 @@
+ # Created from http://www.ueberallfernsehen.de/data/senderliste.pdf
+ # T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
+ T 474000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE # CH21: Das Erste, arte, Phoenix, EinsFestival
+-T 482000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH22: ZDF, 3sat, KiKa / ZDFdokukanal, ZDFinfokanal
++T 482000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH22: ZDF, 3sat, KiKa / ZDFneo, ZDFinfokanal
+ T 506000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE # CH25: Das Erste, arte, Phoenix, EinsFestival
+-T 522000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE # CH27: MDR-TH, rbb, hr, BR
+-T 690000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE # CH48: MDR-TH, rbb, hr, BR
+-T 706000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH50: ZDF, 3sat, KiKa / ZDFdokukanal, ZDFinfokanal
++T 522000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE # CH27: MDR-TH, rbb, hr, Bayerisches Fernsehen
++T 690000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE # CH48: MDR-TH, rbb, hr, Bayerisches Fernsehen
++T 706000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE # CH50: ZDF, 3sat, KiKa / ZDFneo, ZDFinfokanal
+ T 730000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE # CH53: Das Erste, arte, Phoenix, EinsFestival
+diff -r af23d23c278b util/scan/dvb-t/dk-All
+--- a/util/scan/dvb-t/dk-All Sat Jun 20 16:47:55 2009 +0200
++++ b/util/scan/dvb-t/dk-All Tue Dec 21 12:13:28 2010 +0100
+@@ -2,16 +2,22 @@
+ # Created from http://www.digi-tv.dk/Indhold_og_tilbud/frekvenser.asp
+ # and http://www.digi-tv.dk/Sendenettets_opbygning/
+ # T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
+-T 482000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
+ T 506000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
++T 514000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
+ T 538000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
++T 546000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
+ T 554000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
++T 578000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
+ T 602000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
++T 626000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
++T 642000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
+ T 658000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
+-T 682000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
+-T 690000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
++T 698000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
++T 706000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
+ T 714000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
++T 730000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
+ T 738000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
++T 754000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
++T 762000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
++T 770000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
+ T 778000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
+-T 826000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
+-T 834000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
+diff -r af23d23c278b util/scan/dvb-t/es-Albacete
+--- a/util/scan/dvb-t/es-Albacete Sat Jun 20 16:47:55 2009 +0200
++++ b/util/scan/dvb-t/es-Albacete Tue Dec 21 12:13:28 2010 +0100
+@@ -1,8 +1,14 @@
+-# Spain, Albacete
++# Spain, Albacete - Update 2010/08/12 (Freud)
+ # T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
+-T 778000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE # Canal 59: La Primera, La 2, Canal 24H, Clan/TVE 50, RNE1, RNE Clásica, RNE 3
+-T 810000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE # Canal 63: CLMTV
+-T 834000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE # Canal 66: Veo, Veo 2, Net TV, Teledeporte
+-T 842000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE # Canal 67: Cuatro, CNN+, 40 Latino, La Sexta 1
+-T 850000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE # Canal 68: Telecinco, Telecinco Sport, Telecinco Estrellas, Fly Music
+-T 858000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE # Canal 69: Antena 3, Antena Neox, Antena Nova, La Sexta 2
++T 602000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE # Canal 37: La Regional, TCM, CRN
++T 674000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE # Canal 46: Sogecuatro, laSexta2, laSexta3 (Todos pendientes de asignar)
++T 682000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE # Canal 47: CNC, Vision6, ABTeVe, Punto Radio
++T 706000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE # Canal 50: Boing, La 10, MTV, Punto Radio
++T 730000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE # Canal 53: Nitro, Marca TV, Veo13
++T 754000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE # Canal 56: TVE HD, Teledeporte, Pruebas TVE, RNE 1, RNE CLÃSICA, RNE 3
++T 778000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE # Canal 59: La 1, La 2, 24H, Clan, RNE1, RNE Clásica, RNE 3
++T 810000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE # Canal 63: CMT, CMT2, RCM
++T 834000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE # Canal 66: Veo7, Tienda en Veo, Intereconomía, AXN, Teledeporte, Radio Intereconomía, Radio Marca, esRadio, Vaughan Radio
++T 842000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE # Canal 67: Cuatro, CNN+, 40 Latino, Canal+ Dos, Canal Club, LaSexta, SER, 40 Principales, Cadena Dial
++T 850000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE # Canal 68: Telecinco, La Siete, FDF, CincoShop, Disney Channel, Punto Radio
++T 858000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE # Canal 69: Antena 3, Neox, Nova, Gol Televisión, Onda Cero, Europa FM, Onda Melodía
+diff -r af23d23c278b util/scan/dvb-t/es-Alfabia
+--- a/util/scan/dvb-t/es-Alfabia Sat Jun 20 16:47:55 2009 +0200
++++ b/util/scan/dvb-t/es-Alfabia Tue Dec 21 12:13:28 2010 +0100
+@@ -1,5 +1,8 @@
+ # DVB-T Alfabia, Mallorca, Balearic Islands, Spain.
+ # T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
++T 514000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE # TV3 Cat, 3/24, 33, Super3/300
++T 602000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE # TV Mallorca, Canal 4
++T 634000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE # Popular TV, TEVEi
+ T 810000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE # C.63: 24h, 50 aniv., ClanTV, La 2, TVE1; RNE 1, RNE 3, RNE C; Digitext, EPG, Lanzadera.
+ T 826000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE # C.65: IB3, Aprenda Ingles TV
+ T 834000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE # C.66: NetTV, Teledeporte, VeoTV1, VeoTV2.
+diff -r af23d23c278b util/scan/dvb-t/es-BaixoMinho
+--- /dev/null Thu Jan 01 00:00:00 1970 +0000
++++ b/util/scan/dvb-t/es-BaixoMinho Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,16 @@
++# file automatically generated by w_scan
++# (http://wirbel.htpc-forum.de/w_scan/index2.html)
++#! <w_scan> 20090528 1 0 OFDM ES </w_scan>
++#------------------------------------------------------------------------------
++# location and provider: Baixo Minho, Pontevedra (Spain)
++# date (yyyy-mm-dd) : 2009-07-11
++# provided by (opt) : neonmann@gmail.com
++#
++# T[2] <freq> <bw> <fec_hi> <fec_lo> <mod> <tm> <guard> <hi> [# comment]
++#------------------------------------------------------------------------------
++T 834000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE # SFN
++T 842000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
++T 850000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE # SFN
++T 858000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
++T 770000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE # RAR Pontevedra
++T 810000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE # RGE GALICIA
+diff -r af23d23c278b util/scan/dvb-t/es-Collserola
+--- a/util/scan/dvb-t/es-Collserola Sat Jun 20 16:47:55 2009 +0200
++++ b/util/scan/dvb-t/es-Collserola Tue Dec 21 12:13:28 2010 +0100
+@@ -1,10 +1,12 @@
+ # DVB-T Collserola (Barcelona)
+ # T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
+-T 514000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE #c26: BTV
+-T 570000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE #c33: CityTV
+-T 794000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE #c61: TV3, K3/33, 3/24, 300
++T 514000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE #c26: BTV, TV Badalona, TV L'Hospitalet, TV del Besòs, COM Ràdio, Ràdio Ciutat Badalona, Ràdio L'Hospitalet
++T 570000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE #c33: 8TV, Barça TV, EDC3, 105TV, RAC 1, RAC 105
++T 650000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE #c43: TV3HD, 3/24, Canal 9, IB3, Catalunya Música, iCat FM
++T 690000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE #c48: Urbe TV, Canal Català, 25 TV, Localia, Ona FM, Onda Rambla, Sensació Ràdio
++T 794000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE #c61: TV3, 33, 3/24, K3/300, Catalunya Ràdio, Catalunya Informació
+ T 818000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE #c64: TVE1, TVE2, TVE 24H, Clan/TVE 50 Años, RNE1, RNEC, RNE3
+-T 834000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE #c66: Veo TV, Veo2, Net TV, Teledeporte
+-T 842000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE #c67: Cuatro, CNN+, 40 Latino, La Sexta1
+-T 850000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE #c68: Telecino, T5 Sport, T5 Estrellas, Fly Music
+-T 858000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE #c69: Antena 3, Antena.Neox, Antena.Nova, La Sexta2
++T 834000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE #c66: Veo7, Sony TV en Veo, Tienda en Veo, Intereconomía, Teledeporte, Radio Intereconomía, Radio Marca
++T 842000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE #c67: Cuatro, CNN+, 40 Latino, La Sexta, Ser, 40 Principales, Cadena Dial
++T 850000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE #c68: Telecino, La Siete, FDF, CincoShop, Disney Channel, Punto Radio
++T 858000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE #c69: Antena 3, Antena.Neox, Antena.Nova, Hogar 10, Onda Cero, Europa FM, Onda Melodía
+diff -r af23d23c278b util/scan/dvb-t/es-Granada
+--- /dev/null Thu Jan 01 00:00:00 1970 +0000
++++ b/util/scan/dvb-t/es-Granada Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,8 @@
++# Spain, Granada
++# T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
++T 762000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
++T 770000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
++T 834000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
++T 842000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
++T 850000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
++T 858000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
+diff -r af23d23c278b util/scan/dvb-t/es-Las_Palmas
+--- a/util/scan/dvb-t/es-Las_Palmas Sat Jun 20 16:47:55 2009 +0200
++++ b/util/scan/dvb-t/es-Las_Palmas Tue Dec 21 12:13:28 2010 +0100
+@@ -1,8 +1,18 @@
+-# Funciona correctamente en Las Palmas de Gran Canaria (24-4-2007)
++# Funciona correctamente en Las Palmas de Gran Canaria (25-09-2010)
++#
++# Revisada y corregida por el Grupo de Usuarios de Linux de Canarias
++# http://www.gulic.org
++#
+ # T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
++T 530000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE # Canal 28: TVE HD, Teledeporte, RNE Clásica, RNE 3
++T 562000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE # Canal 32: Boing, Telecinco HD, La 10, MTV, Punto Radio
++T 586000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE # Canal 35: Sogecuatro, LaSexta2, LaSexta3
++T 610000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE # Canal 38: Nitro, Antena 3 HD, Marca TV, Veo13
++T 658000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE # Canal 44: Canal 7 Gran Canaria, TIC Canal 8, Canal 4, RTI
++T 722000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE # Canal 52: Localia, Nueve TV, Nueve Radio
+ T 786000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE # Canal 60: TVE1, TVE2, 24H TVE, Clan/TVE, RNE, RNEC, RNE3, Lanzadera, EPG, Digitext, Meteo, Bolsa, Trafico, Empleat
+-T 826000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE # Canal 65: TV C, TV C2
+-T 834000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE # Canal 66: Net TV, Teledeporte, Veo TV1, SETenVeo, Radio Intereconomía Lanzadera, EPG, Digitext, Meteo, Bolsa, Trafico, Empleat
+-T 842000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE # Canal 67: CNN+, Cuatro, La Sexta 1, 40 Latino TV, EPG Soge V2 5
+-T 850000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE # Canal 68: Fly Music, Punto Radio, Tele 5, Tele 5 Estrellas, Tele 5 Sport
+-T 858000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE # Canal 69: Antena 3, Antena.Neox, Antena.Nova, Telehit, Onda Cero, Europa FM, Onda Melodia, A3Lanzadera, A3Portal, EPGA3, A3Ticker
++T 826000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE # Canal 65: TV C, TV C2, Antena 3 Canarias, Popular TV, Canarias Radio, Cope, Cadena 100, Radio ECCA, Lanzadera, Ticker, Piloto TDT
++T 834000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE # Canal 66: Veo7, Tienda en Veo, AXN, Intereconomia, Teledeporte, Radio Intereconomia, Radio Marca, esRadio, Vaughan Radio, Canal Ingeniería, GUIDE Plus +, C66Gancho, C66Lanzadera, C66EPG, EpgNet
++T 842000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE # Canal 67: Cuatro, CNN+, Canal+ Dos, Canal Club, laSexta, SER, 40 Principales, Cadena Dial, Lanzadera, EPG TDT, Ticker, Lanzadera, Noticias, EPG
++T 850000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE # Canal 68: Telecinco, La Siete, FDF, CincoShop, Disney Channel, T5Lanzadera, T5Digitext, Noticias, Tiempo, Bolsa, Tráfico
++T 858000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE # Canal 69: Antena 3, Neox, Nova, Gol Televisión, Onda Cero, Europa FM, Onda Melodía, tvtv DIGITAL, A3Lanzadera, A3Portal, A3EPG, A3Ticker, T-seniority, Gol Bar
+diff -r af23d23c278b util/scan/dvb-t/es-Pamplona
+--- /dev/null Thu Jan 01 00:00:00 1970 +0000
++++ b/util/scan/dvb-t/es-Pamplona Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,9 @@
++# DVB-T Pamplona
++# T freq bw fec_hi fec_lo mod transm-mode guard-interval hierarchy
++T 610000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
++T 778000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
++T 802000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
++T 834000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
++T 842000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
++T 850000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
++T 858000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
+diff -r af23d23c278b util/scan/dvb-t/es-SC_Tenerife
+--- /dev/null Thu Jan 01 00:00:00 1970 +0000
++++ b/util/scan/dvb-t/es-SC_Tenerife Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,18 @@
++# Funciona correctamente en Santa Cruz de Tenerife (25-09-2010)
++#
++# Revisada y corregida por el Grupo de Usuarios de Linux de Canarias
++# http://www.gulic.org
++#
++# T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
++T 490000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE # C23
++T 498000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE # C24
++T 514000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE # C26
++T 538000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE # C29
++T 666000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE # C45
++T 754000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE # C56
++T 778000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE # C59
++T 786000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE # C60
++T 834000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE # C66
++T 842000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE # C67
++T 850000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE # C68
++T 858000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE # C69
+diff -r af23d23c278b util/scan/dvb-t/es-Sevilla
+--- a/util/scan/dvb-t/es-Sevilla Sat Jun 20 16:47:55 2009 +0200
++++ b/util/scan/dvb-t/es-Sevilla Tue Dec 21 12:13:28 2010 +0100
+@@ -1,7 +1,22 @@
+-# DVB-T Sevilla (Andalucia) by x2 15 Agosto 2006
++# DVB-T Sevilla (Spain) by x2 15-agos-2010, modificado 15-ago-2010
++# thanks to http://www.tdt1.com
++# thanks to http://wirbel.htpc-forum.de/w_scan/index2.html
+ # T freq bw fec_hi fec_lo mod transm-mode guard-interval hierarchy
++T 570000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE # C33
++T 594000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE # C36
++T 610000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE # C38
++T 634000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE # C41
++T 658000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE # C44
++T 666000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE # C45
++T 698000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE # C49
++T 722000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE # C52
++T 738000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE # C54
++T 746000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE # C55
++T 754000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE # C56
+ T 762000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE # C57
++T 778000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE # C59
+ T 794000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE # C61
++T 810000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE # C63
+ T 834000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE # C66
+ T 842000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE # C67
+ T 850000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE # C68
+diff -r af23d23c278b util/scan/dvb-t/es-Vitoria-Gasteiz
+--- /dev/null Thu Jan 01 00:00:00 1970 +0000
++++ b/util/scan/dvb-t/es-Vitoria-Gasteiz Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,8 @@
++# Channel names in use at 2009/07/12, in Channel 66 [fffe] is a scrambled channel.
++# In the generated *channels.conf file could be necesary to change Intereconomía, Radio Intereconomía, ONDA MELODÃA to Intereconomia, Radio Intereconomia, ONDA MELODIA for Totem to work well.
++T 770000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE # Canal 58: ETB1, ETB2, ETB3, ETBSAT, Euskadi Irratia, Gaztea, EiTB Irratia, Radio Euskadi, Radio Vitoria
++T 810000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE # Canal 63: La 1, La 2, 24h, Clan, RNE1, RNEC, RNE3
++T 834000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE # Canal 66: Teledeporte, Canal Ingenieria, VEO7, SONY TV en VEO, Tienda en VEO, GUIDE PLUS+, Intereconomía, Radio Intereconomía, [fffe], RADIO MARCA
++T 842000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE # Canal 67: laSexta, CUATRO, CNN+, 40 LATINO, CANAL CLUB, SER, 40 PRINCIPALES, CADENA DIAL
++T 850000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE # Canal 68: Telecinco, FDF, LaSiete, Disney Channel, Cincoshop
++T 858000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE # Canal 69: ANTENA 3, ANTENA.NEOX, ANTENA.NOVA, ONDA CERO, EUROPA FM, ONDA MELODÃA, HOGAR 10
+diff -r af23d23c278b util/scan/dvb-t/fi-Smedsbole
+--- /dev/null Thu Jan 01 00:00:00 1970 +0000
++++ b/util/scan/dvb-t/fi-Smedsbole Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,13 @@
++#------------------------------------------------------------------------------
++# file automatically generated by w_scan
++# (http://wirbel.htpc-forum.de/w_scan/index2.html)
++#! <w_scan> 20090808 2 0 OFDM FI </w_scan>
++#------------------------------------------------------------------------------
++# location and provider: Åland Smedsböle/Sund
++# date (yyyy-mm-dd) : 2009-12-23
++# provided by (opt) : k.hampf@gmail.com
++#
++# T[2] <freq> <bw> <fec_hi> <fec_lo> <mod> <tm> <guard> <hi> [# comment]
++#------------------------------------------------------------------------------
++T 506000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE # Ã…land Network
++T 586000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE # Ã…land Network
+diff -r af23d23c278b util/scan/dvb-t/fr-Boulogne
+--- a/util/scan/dvb-t/fr-Boulogne Sat Jun 20 16:47:55 2009 +0200
++++ b/util/scan/dvb-t/fr-Boulogne Tue Dec 21 12:13:28 2010 +0100
+@@ -1,24 +1,21 @@
+ # Boulogne - France (DVB-T transmitter of Boulogne ( MontLambert ) )
+ # Boulogne - France (signal DVB-T transmis depuis l'émetteur de MontLambert )
+ #
+-# ATTENTION ! Ce fichier a ete construit automatiquement a partir
+-# des frequences obtenues sur : http://www.tvnt.net/multiplex_frequences.htm
+-# en Avril 2006. Si vous constatez des problemes et voulez apporter des
++# Si vous constatez des problemes et voulez apporter des
+ # modifications au fichier, envoyez le fichier modifie a
+-# l'adresse linux-dvb@linuxtv.org (depot des fichiers d'init dvb)
+-# ou a l'auteur du fichier :
+-# Nicolas Estre <n_estre@yahoo.fr>
++# l'adresse linux-media@vger.kernel.org (depot des fichiers d'init dvb)
+ #
+ # T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
+ #### Boulogne - MontLambert ####
++# (Boulogne sur mer)
+ #R1
++T 530000000 8MHz AUTO NONE QAM64 8k AUTO NONE
++#R2
+ T 586000000 8MHz AUTO NONE QAM64 8k AUTO NONE
+-#R2
+-T 626000000 8MHz AUTO NONE QAM64 8k AUTO NONE
+ #R3
+-T 666000000 8MHz AUTO NONE QAM64 8k AUTO NONE
++T 634000000 8MHz AUTO NONE QAM64 8k AUTO NONE
+ #R4
+-T 690000000 8MHz AUTO NONE QAM64 8k AUTO NONE
++T 658000000 8MHz AUTO NONE QAM64 8k AUTO NONE
+ #R5
+ T 698000000 8MHz AUTO NONE QAM64 8k AUTO NONE
+ #R6
+diff -r af23d23c278b util/scan/dvb-t/fr-Brest
+--- a/util/scan/dvb-t/fr-Brest Sat Jun 20 16:47:55 2009 +0200
++++ b/util/scan/dvb-t/fr-Brest Tue Dec 21 12:13:28 2010 +0100
+@@ -2,8 +2,8 @@
+ # Emetteur du Roch Tredudon
+ # T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
+ T 546000000 8MHz 1/2 NONE QAM16 8k 1/32 NONE
+-T 482000000 8MHz 1/2 NONE QAM16 8k 1/32 NONE
+-T 506000000 8MHz 1/2 NONE QAM16 8k 1/32 NONE
+-T 490000000 8MHz 1/2 NONE QAM16 8k 1/32 NONE
+-T 530000000 8MHz 1/2 NONE QAM16 8k 1/32 NONE
+-T 514000000 8MHz 1/2 NONE QAM16 8k 1/32 NONE
++T 578000000 8MHz 1/2 NONE QAM16 8k 1/32 NONE
++T 586000000 8MHz 1/2 NONE QAM16 8k 1/32 NONE
++T 618000000 8MHz 1/2 NONE QAM16 8k 1/32 NONE
++T 650000000 8MHz 1/2 NONE QAM16 8k 1/32 NONE
++T 770000000 8MHz 1/2 NONE QAM16 8k 1/32 NONE
+diff -r af23d23c278b util/scan/dvb-t/fr-Chambery
+--- a/util/scan/dvb-t/fr-Chambery Sat Jun 20 16:47:55 2009 +0200
++++ b/util/scan/dvb-t/fr-Chambery Tue Dec 21 12:13:28 2010 +0100
+@@ -1,30 +1,24 @@
+-# Chambéry - France (DVB-T transmitter of Chambéry ( Nondéfini ) )
+-# Chambéry - France (signal DVB-T transmis depuis l'émetteur de Nondéfini )
++# Chambery - France (DVB-T transmitter of Chambery )
++# Chambery - France (signal DVB-T transmis depuis l'emetteur de Chambery )
+ #
+-# ATTENTION ! Ce fichier a ete construit automatiquement a partir
+-# des frequences obtenues sur : http://www.tvnt.net/multiplex_frequences.htm
+-# en Avril 2006. Si vous constatez des problemes et voulez apporter des
++# Ce fichier a ete ecrit par Yann Soubeyrand (04/2010)
++# Si vous constatez des problemes et voulez apporter des
+ # modifications au fichier, envoyez le fichier modifie a
+ # l'adresse linux-dvb@linuxtv.org (depot des fichiers d'init dvb)
+-# ou a l'auteur du fichier :
++# ou au mainteneur du fichier :
+ # Nicolas Estre <n_estre@yahoo.fr>
+ #
+ # T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
+-#### Chambéry - Nondéfini ####
+-#R1
+-#T FREQ1 8MHz AUTO NONE QAM64 8k AUTO NONE
+-#R2
+-#T FREQ2 8MHz AUTO NONE QAM64 8k AUTO NONE
+-#R3
+-#T FREQ3 8MHz AUTO NONE QAM64 8k AUTO NONE
+-#R4
+-#T FREQ4 8MHz AUTO NONE QAM64 8k AUTO NONE
+-#R5
+-#T FREQ5 8MHz AUTO NONE QAM64 8k AUTO NONE
+-#R6
+-#T FREQ6 8MHz AUTO NONE QAM64 8k AUTO NONE
+-##############################################################
+-# en Avril 2006, l'emetteur pour Chambéry n'etait pas defini
+-# Vous devez donc modifier les frequences manuellement.
+-# SVP Renvoyez le fichier mis a jour aux contacts ci-dessus.
+-##############################################################
++#### Chambery - Defini par Alex le 23/05/2008 pour l'emetteur des monts
++# R1 canal 62
++T 802167000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
++# R2 canal 48
++T 690167000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
++# R3 canal 51
++T 714167000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
++# R4 canal 54
++T 738167000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
++# R5 canal 59
++T 778167000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
++# R6 canal 47
++T 682167000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
+diff -r af23d23c278b util/scan/dvb-t/fr-Laval
+--- a/util/scan/dvb-t/fr-Laval Sat Jun 20 16:47:55 2009 +0200
++++ b/util/scan/dvb-t/fr-Laval Tue Dec 21 12:13:28 2010 +0100
+@@ -12,14 +12,14 @@
+ # T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
+ #### Laval - MontRochard ####
+ #R1
+-T 778000000 8MHz AUTO NONE QAM64 8k AUTO NONE
++T 714000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
+ #R2
+-T 610000000 8MHz AUTO NONE QAM64 8k AUTO NONE
++T 570000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
+ #R3
+-T 754000000 8MHz AUTO NONE QAM64 8k AUTO NONE
++T 770000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
+ #R4
+-T 794000000 8MHz AUTO NONE QAM64 8k AUTO NONE
++T 762000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
+ #R5
+-T 602000000 8MHz AUTO NONE QAM64 8k AUTO NONE
++T 650000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
+ #R6
+-T 802000000 8MHz AUTO NONE QAM64 8k AUTO NONE
++T 786000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
+diff -r af23d23c278b util/scan/dvb-t/fr-Lille
+--- a/util/scan/dvb-t/fr-Lille Sat Jun 20 16:47:55 2009 +0200
++++ /dev/null Thu Jan 01 00:00:00 1970 +0000
+@@ -1,30 +0,0 @@
+-# Lille - France (DVB-T transmitter of Lille ( Nondéfini ) )
+-# Lille - France (signal DVB-T transmis depuis l'émetteur de Nondéfini )
+-#
+-# ATTENTION ! Ce fichier a ete construit automatiquement a partir
+-# des frequences obtenues sur : http://www.tvnt.net/multiplex_frequences.htm
+-# en Avril 2006. Si vous constatez des problemes et voulez apporter des
+-# modifications au fichier, envoyez le fichier modifie a
+-# l'adresse linux-dvb@linuxtv.org (depot des fichiers d'init dvb)
+-# ou a l'auteur du fichier :
+-# Nicolas Estre <n_estre@yahoo.fr>
+-#
+-# T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
+-#### Lille - Nondéfini ####
+-#R1
+-#T FREQ1 8MHz AUTO NONE QAM64 8k AUTO NONE
+-#R2
+-#T FREQ2 8MHz AUTO NONE QAM64 8k AUTO NONE
+-#R3
+-#T FREQ3 8MHz AUTO NONE QAM64 8k AUTO NONE
+-#R4
+-#T FREQ4 8MHz AUTO NONE QAM64 8k AUTO NONE
+-#R5
+-#T FREQ5 8MHz AUTO NONE QAM64 8k AUTO NONE
+-#R6
+-#T FREQ6 8MHz AUTO NONE QAM64 8k AUTO NONE
+-##############################################################
+-# en Avril 2006, l'emetteur pour Lille n'etait pas defini
+-# Vous devez donc modifier les frequences manuellement.
+-# SVP Renvoyez le fichier mis a jour aux contacts ci-dessus.
+-##############################################################
+diff -r af23d23c278b util/scan/dvb-t/fr-Lille-Bouvigny
+--- /dev/null Thu Jan 01 00:00:00 1970 +0000
++++ b/util/scan/dvb-t/fr-Lille-Bouvigny Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,26 @@
++# Lille - France (DVB-T transmitter of Lille ( Bouvigny ) )
++# Lille - France (signal DVB-T transmis depuis l'emetteur de Bouvigny )
++#
++# Fichier construit par Romain Bajeux (05/2010)
++# Si vous constatez des problemes et voulez apporter des
++# modifications au fichier, envoyez le fichier modifie a
++# l'adresse linux-dvb@linuxtv.org (depot des fichiers d'init dvb)
++# ou au mainteneur du fichier :
++# Nicolas Estre <n_estre@yahoo.fr>
++#
++# T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
++#### Lille - Bouvigny ####
++#R1
++T 490167000 8MHz AUTO NONE QAM64 8k AUTO NONE
++#R2
++T 690167000 8MHz AUTO NONE QAM64 8k AUTO NONE
++#R3
++T 514167000 8MHz AUTO NONE QAM64 8k AUTO NONE
++#R4
++T 546167000 8MHz AUTO NONE QAM64 8k AUTO NONE
++#R5
++T 554167000 8MHz AUTO NONE QAM64 8k AUTO NONE
++#R6
++T 586167000 8MHz AUTO NONE QAM64 8k AUTO NONE
++#Belge
++T 754167000 8MHz AUTO NONE QAM64 8k AUTO NONE
+diff -r af23d23c278b util/scan/dvb-t/fr-LilleT2
+--- a/util/scan/dvb-t/fr-LilleT2 Sat Jun 20 16:47:55 2009 +0200
++++ /dev/null Thu Jan 01 00:00:00 1970 +0000
+@@ -1,13 +0,0 @@
+-# Lille - France (DVB-T transmitter of Lambersart)
+-#offset of 167000 for Cinergy T2. Other type of card users need to replace 167 by 000
+-# T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
+-#R2
+-T 538167000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
+-#R4
+-T 546167000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
+-#R3
+-T 562167000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
+-#R6
+-T 586167000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
+-#R1
+-T 594167000 8MHz 3/4 NONE QAM64 8k 1/8 NONE
+diff -r af23d23c278b util/scan/dvb-t/fr-Montbeliard
+--- a/util/scan/dvb-t/fr-Montbeliard Sat Jun 20 16:47:55 2009 +0200
++++ b/util/scan/dvb-t/fr-Montbeliard Tue Dec 21 12:13:28 2010 +0100
+@@ -1,18 +1,18 @@
+-# Montbéliard - France (DVB-T transmitter of Montbéliard "Fort Lachaux" )
+-# Montbéliard - France (signal DVB-T transmis depuis l'émetteur de Fort Lachaux )
++# Montbéliard - France (DVB-T transmitter of Montbéliard "Fort Lachaux", since 16 nov. 2010)
++# Montbéliard - France (signal DVB-T transmis depuis l'émetteur de Fort Lachaux, à compter du 16/11/2010)
+ #
+ # T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
+-# multiplex R1 (GR1), canal 29V + offset 167000 : FRANCE 2 SD , FRANCE 5 , ARTE SD , La Chaîne Parlementaire/Public Sénat , FRANCE 3 , FRANCE 3 Franche-Comté
++# multiplex R4 (MULTI4), canal 58V + offset 167000 : ARTE HD , PARIS PREMIERE, M6 SD , W9 et NT1
++T 490167000 8MHz AUTO NONE QAM64 8k AUTO NONE
++# multiplex R6 (SMR6), canal 26V + offset 167000 : TF1 SD , NRJ 12 , EUROSPORT, LCI, TMC et TF6
++T 514167000 8MHz AUTO NONE QAM64 8k AUTO NONE
++# multiplex R5 (MR5), canal 29 : TF1 HD , France 2 HD et M6HD
+ T 538167000 8MHz AUTO NONE QAM64 8k AUTO NONE
+-# multiplex R3 (CNH), canal 43V + offset 167000 : CANAL+ , CANAL+HD , CANAL+ CINEMA , CANAL+ SPORT , PLANETE , CANAL J et TPS STAR
+-T 650167000 8MHz AUTO NONE QAM64 8k AUTO NONE
+-# multiplex R2 (NTN), canal 55V + offset 167000 : DIRECT 8 , BFM TV , I>TELE , FRANCE 4 , VIRGIN 17 , GULLI et France 4
+-T 746167000 8MHz AUTO NONE QAM64 8k AUTO NONE
+-# multiplex R6 (SMR6), canal 32V + offset 167000 : TF1 SD , NRJ 12 , TMC , EUROSPORT , LCI et TF6
+-T 562167000 8MHz AUTO NONE QAM64 8k AUTO NONE
+-# Télévision Suisse, canal 56V + offset 000000 : TSR1 , TSR2 , TSI1 et SF 1
++# multiplex R2 (NTN), canal 55V + offset 167000 : Direct 8 , BFM TV , i>TELE , DirectStar , Gulli et France 4
++T 658167000 8MHz AUTO NONE QAM64 8k AUTO NONE
++# multiplex R3 (CNH), canal 54V + offset 167000 : CANAL+ , CANAL+ CINEMA , CANAL+ SPORT , PLANETE et TPS STAR
++T 738167000 8MHz AUTO NONE QAM64 8k AUTO NONE
++# Télévision Suisse, canal 56V + offset 000000 : SF1, TSR1 , TSR2 et RSI LA 1
+ T 754000000 8MHz AUTO NONE QAM64 8k AUTO NONE
+-# multiplex R4 (MULTI4), canal 58V + offset 167000 : ARTE HD , PARIS PREMIERE, M6 SD , W9 , NT1
+-T 770167000 8MHz AUTO NONE QAM64 8k AUTO NONE
+-# multiplex R5 (???), canal ??? : TF1 HD , FRANCE 2 HD, M6 HD
+-# canal d'émission pas encore défini (février 2009)
++# multiplex R1 (GR1), canal 60V + offset 167000 : France 2 SD , France 5 , France Ô , LCP et France 3
++T 786167000 8MHz AUTO NONE QAM64 8k AUTO NONE
+diff -r af23d23c278b util/scan/dvb-t/fr-Nantes
+--- a/util/scan/dvb-t/fr-Nantes Sat Jun 20 16:47:55 2009 +0200
++++ b/util/scan/dvb-t/fr-Nantes Tue Dec 21 12:13:28 2010 +0100
+@@ -1,8 +1,9 @@
+ # Nantes - France
+ # T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
+-T 498000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
+-T 506000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
+-T 522000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
+-T 530000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
+-T 658000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
+-T 802000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
++T 682000000 8MHz AUTO NONE QAM64 8k AUTO NONE
++T 490000000 8MHz AUTO NONE QAM64 8k AUTO NONE
++T 546000000 8MHz AUTO NONE QAM64 8k AUTO NONE
++T 738000000 8MHz AUTO NONE QAM64 8k AUTO NONE
++T 658000000 8MHz AUTO NONE QAM64 8k AUTO NONE
++T 538000000 8MHz AUTO NONE QAM64 8k AUTO NONE
++T 754000000 8MHz AUTO NONE QAM16 8k AUTO NONE
+diff -r af23d23c278b util/scan/dvb-t/fr-Poitiers
+--- a/util/scan/dvb-t/fr-Poitiers Sat Jun 20 16:47:55 2009 +0200
++++ b/util/scan/dvb-t/fr-Poitiers Tue Dec 21 12:13:28 2010 +0100
+@@ -12,14 +12,12 @@
+ # T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
+ #### Poitiers - Agglomération ####
+ #R1
+-T 706000000 8MHz AUTO NONE QAM64 8k AUTO NONE
++T 506000000 8MHz AUTO NONE QAM64 8k AUTO NONE
+ #R2
+-T 778000000 8MHz AUTO NONE QAM64 8k AUTO NONE
++T 546000000 8MHz AUTO NONE QAM64 8k AUTO NONE
+ #R3
+-T 802000000 8MHz AUTO NONE QAM64 8k AUTO NONE
++T 722000000 8MHz AUTO NONE QAM64 8k AUTO NONE
+ #R4
+-T 730000000 8MHz AUTO NONE QAM64 8k AUTO NONE
+-#R5
++T 738000000 8MHz AUTO NONE QAM64 8k AUTO NONE
++#R6 (no R5)
+ T 754000000 8MHz AUTO NONE QAM64 8k AUTO NONE
+-#R6
+-T 794000000 8MHz AUTO NONE QAM64 8k AUTO NONE
+diff -r af23d23c278b util/scan/dvb-t/fr-Reims
+--- a/util/scan/dvb-t/fr-Reims Sat Jun 20 16:47:55 2009 +0200
++++ b/util/scan/dvb-t/fr-Reims Tue Dec 21 12:13:28 2010 +0100
+@@ -1,25 +1,21 @@
+ # Reims - France (DVB-T transmitter of Reims ( Hautvillers ) )
+ # Reims - France (signal DVB-T transmis depuis l'émetteur de Hautvillers )
+ #
+-# ATTENTION ! Ce fichier a ete construit automatiquement a partir
+-# des frequences obtenues sur : http://www.tvnt.net/multiplex_frequences.htm
+-# en Avril 2006. Si vous constatez des problemes et voulez apporter des
++# Si vous constatez des problemes et voulez apporter des
+ # modifications au fichier, envoyez le fichier modifie a
+ # l'adresse linux-dvb@linuxtv.org (depot des fichiers d'init dvb)
+-# ou a l'auteur du fichier :
+-# Nicolas Estre <n_estre@yahoo.fr>
+ #
+ # T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
+ #### Reims - Hautvillers ####
+ #R1
+-T 562000000 8MHz AUTO NONE QAM64 8k AUTO NONE
++T 626000000 8MHz AUTO NONE QAM64 8k AUTO NONE
+ #R2
+-T 554000000 8MHz AUTO NONE QAM64 8k AUTO NONE
++T 650000000 8MHz AUTO NONE QAM64 8k AUTO NONE
+ #R3
+-T 602000000 8MHz AUTO NONE QAM64 8k AUTO NONE
++T 666000000 8MHz AUTO NONE QAM64 8k AUTO NONE
+ #R4
+-T 578000000 8MHz AUTO NONE QAM64 8k AUTO NONE
++T 674000000 8MHz AUTO NONE QAM64 8k AUTO NONE
+ #R5
+-T 666000000 8MHz AUTO NONE QAM64 8k AUTO NONE
++T 730000000 8MHz AUTO NONE QAM64 8k AUTO NONE
+ #R6
+-T 642000000 8MHz AUTO NONE QAM64 8k AUTO NONE
++T 754000000 8MHz AUTO NONE QAM64 8k AUTO NONE
+diff -r af23d23c278b util/scan/dvb-t/fr-Rochefort-sur-mer
+--- /dev/null Thu Jan 01 00:00:00 1970 +0000
++++ b/util/scan/dvb-t/fr-Rochefort-sur-mer Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,14 @@
++# TNT à Rochefort (17)
++# T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
++
++#multiplex 6 ( TF1 LCI Eurosport TF6 NRJ12 TMC )
++T 498166000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
++
++#multiplex 4 ( M6 W9 NT1 Paris Première ARTE HD )
++T 738166000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
++
++#multiplex 1 ( France 2 France 3 France 5 ARTE LCP Chaîne locale ou France Ô )
++T 602166000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
++
++#multiplex 2 ( Direct 8 France 4 BFM TV Virgin 17 Gulli i>Télé )
++T 778167000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
+diff -r af23d23c278b util/scan/dvb-t/fr-Tours
+--- a/util/scan/dvb-t/fr-Tours Sat Jun 20 16:47:55 2009 +0200
++++ b/util/scan/dvb-t/fr-Tours Tue Dec 21 12:13:28 2010 +0100
+@@ -1,25 +1,11 @@
+-# Tours - France (DVB-T transmitter of Tours ( Chissay ) )
+-# Tours - France (signal DVB-T transmis depuis l'émetteur de Chissay )
+-#
+-# ATTENTION ! Ce fichier a ete construit automatiquement a partir
+-# des frequences obtenues sur : http://www.tvnt.net/multiplex_frequences.htm
+-# en Avril 2006. Si vous constatez des problemes et voulez apporter des
+-# modifications au fichier, envoyez le fichier modifie a
+-# l'adresse linux-dvb@linuxtv.org (depot des fichiers d'init dvb)
+-# ou a l'auteur du fichier :
+-# Nicolas Estre <n_estre@yahoo.fr>
++# Tours (Chissay) - France
++# Initial DVB-T tuning as of 19 october 2010
+ #
+ # T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
+-#### Tours - Chissay ####
+-#R1
+-T 578000000 8MHz AUTO NONE QAM64 8k AUTO NONE
+-#R2
+-T 610000000 8MHz AUTO NONE QAM64 8k AUTO NONE
+-#R3
+-T 810000000 8MHz AUTO NONE QAM64 8k AUTO NONE
+-#R4
+-T 690000000 8MHz AUTO NONE QAM64 8k AUTO NONE
+-#R5
+-T 602000000 8MHz AUTO NONE QAM64 8k AUTO NONE
+-#R6
+-T 714000000 8MHz AUTO NONE QAM64 8k AUTO NONE
++T 498000000 8MHz AUTO NONE AUTO AUTO AUTO NONE
++T 578000000 8MHz AUTO NONE AUTO AUTO AUTO NONE
++T 602000000 8MHz AUTO NONE AUTO AUTO AUTO NONE
++T 610000000 8MHz AUTO NONE AUTO AUTO AUTO NONE
++T 690000000 8MHz AUTO NONE AUTO AUTO AUTO NONE
++T 714000000 8MHz AUTO NONE AUTO AUTO AUTO NONE
++
+diff -r af23d23c278b util/scan/dvb-t/gr-Athens
+--- a/util/scan/dvb-t/gr-Athens Sat Jun 20 16:47:55 2009 +0200
++++ b/util/scan/dvb-t/gr-Athens Tue Dec 21 12:13:28 2010 +0100
+@@ -1,3 +1,5 @@
+ # Initial scan config for Digital DVB-T (Ert) in Athens Greece
+ # T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
++T 674000000 8MHz 3/4 NONE QAM64 8k 1/8 NONE # Digea DVB-T
++T 682000000 8MHz 3/4 NONE QAM64 8k 1/8 NONE # Digea DVB-T
+ T 690000000 8MHz 3/4 NONE QAM64 8k 1/8 NONE
+diff -r af23d23c278b util/scan/dvb-t/hr-All
+--- /dev/null Thu Jan 01 00:00:00 1970 +0000
++++ b/util/scan/dvb-t/hr-All Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,30 @@
++# Croatia, whole country
++# Created from http://www.oiv.hr/broadcasting/tables/dtv_hr.aspx
++# T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
++T 474000000 8MHz 3/4 NONE QAM64 8k 1/4 NONE # D1 MUXD
++T 490000000 8MHz 3/4 NONE QAM64 8k 1/4 NONE # D2 MUXA
++T 506000000 8MHz 3/4 NONE QAM64 8k 1/4 NONE # D4 MUXA
++T 530000000 8MHz 3/4 NONE QAM64 8k 1/4 NONE # D5 MUXA, D9 MUXD
++T 538000000 8MHz 3/4 NONE QAM64 8k 1/4 NONE # D5 MUXD
++T 546000000 8MHz 3/4 NONE QAM64 8k 1/4 NONE # D6 MUXA
++T 554000000 8MHz 3/4 NONE QAM64 8k 1/4 NONE # D7 MUXD
++T 570000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE # D1 MUXC
++T 570000000 8MHz 3/4 NONE QAM64 8k 1/4 NONE # D8 MUXA
++T 578000000 8MHz 3/4 NONE QAM64 8k 1/4 NONE # D8 MUXD
++T 594000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE # D5 MUXC
++T 594000000 8MHz 3/4 NONE QAM64 8k 1/4 NONE # D3 MUXD
++T 610000000 8MHz 3/4 NONE QAM64 8k 1/4 NONE # D1 MUXA
++T 618000000 8MHz 3/4 NONE QAM64 8k 1/4 NONE # D2 MUXB
++T 642000000 8MHz 3/4 NONE QAM64 8k 1/4 NONE # D4 MUXD
++T 658000000 8MHz 3/4 NONE QAM64 8k 1/4 NONE # D1 MUXB, D3 MUXA
++T 666000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE # SLO MUXA
++T 674000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE # D8 MUXC
++T 674000000 8MHz 3/4 NONE QAM64 8k 1/4 NONE # D8 MUXD
++T 690000000 8MHz 3/4 NONE QAM64 8k 1/4 NONE # D3 MUXB, D4 MUXB
++T 714000000 8MHz 3/4 NONE QAM64 8k 1/4 NONE # D7 MUXA, D9 MUXA
++T 730000000 8MHz 3/4 NONE QAM64 8k 1/4 NONE # D5 MUXB, D8 MUXB
++T 738000000 8MHz 3/4 NONE QAM64 8k 1/4 NONE # D6 MUXB
++T 754000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE # D4 MUXC
++T 762000000 8MHz 3/4 NONE QAM64 8k 1/4 NONE # Tusti Vrh MUXD
++T 770000000 8MHz 3/4 NONE QAM64 8k 1/4 NONE # D2 MUXD
++T 778000000 8MHz 3/4 NONE QAM64 8k 1/4 NONE # D7 MUXB, D9 MUXB
+diff -r af23d23c278b util/scan/dvb-t/hr-Zagreb
+--- a/util/scan/dvb-t/hr-Zagreb Sat Jun 20 16:47:55 2009 +0200
++++ /dev/null Thu Jan 01 00:00:00 1970 +0000
+@@ -1,3 +0,0 @@
+-# DVB-T Hamburg
+-# T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
+-T 522000000 8MHz 3/4 NONE AUTO 8k 1/32 NONE # CH27:
+diff -r af23d23c278b util/scan/dvb-t/hu-Budapest
+--- /dev/null Thu Jan 01 00:00:00 1970 +0000
++++ b/util/scan/dvb-t/hu-Budapest Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,8 @@
++# Hungary / Budapest
++# T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
++# A1.multiplex UHF-55:
++# MTV-1 HD Budapest, MTV-2 HD, ATV (Hungary), Hir TV, MR-1 Kossuth R, MR-2 Petofi R, MR-3 Bartok R, Katolikus R
++T 746000000 8MHz 3/4 NONE QAM64 8k 1/8 NONE
++# C.multiplex UHF-62:
++# Duna TV HD, Duna-II. Autonomia, RTL Klub, TV-2 (Hungary), Euronews
++T 802000000 8MHz 3/4 NONE QAM64 8k 1/8 NONE
+diff -r af23d23c278b util/scan/dvb-t/hu-Debrecen
+--- /dev/null Thu Jan 01 00:00:00 1970 +0000
++++ b/util/scan/dvb-t/hu-Debrecen Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,8 @@
++# Hungary / Debrecen
++# T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
++# A1.multiplex UHF-46:
++# MTV-1 HD Budapest, MTV-2 HD, ATV (Hungary), Hir TV, MR-1 Kossuth R, MR-2 Petofi R, MR-3 Bartok R, Katolikus R
++T 714000000 8MHz 3/4 NONE QAM64 8k 1/8 NONE
++# C.multiplex UHF-62:
++# Duna TV HD, Duna-II. Autonomia, RTL Klub, TV-2 (Hungary), Euronews
++T 802000000 8MHz 3/4 NONE QAM64 8k 1/8 NONE
+diff -r af23d23c278b util/scan/dvb-t/hu-Gyor
+--- /dev/null Thu Jan 01 00:00:00 1970 +0000
++++ b/util/scan/dvb-t/hu-Gyor Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,8 @@
++# Hungary / Gyor
++# T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
++# A1.multiplex UHF-42:
++# MTV-1 HD Budapest, MTV-2 HD, ATV (Hungary), Hir TV, MR-1 Kossuth R, MR-2 Petofi R, MR-3 Bartok R, Katolikus R
++T 642000000 8MHz 3/4 NONE QAM64 8k 1/8 NONE
++# C.multiplex UHF-61:
++# Duna TV HD, Duna-II. Autonomia, RTL Klub, TV-2 (Hungary), Euronews
++T 794000000 8MHz 3/4 NONE QAM64 8k 1/8 NONE
+diff -r af23d23c278b util/scan/dvb-t/hu-Kabhegy
+--- /dev/null Thu Jan 01 00:00:00 1970 +0000
++++ b/util/scan/dvb-t/hu-Kabhegy Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,8 @@
++# Hungary / Kabhegy
++# T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
++# C.multiplex UHF-61:
++# Duna TV HD, Duna-II. Autonomia, RTL Klub, TV-2 (Hungary), Euronews
++T 794000000 8MHz 3/4 NONE QAM64 8k 1/8 NONE
++# A2.multiplex UHF-64:
++# MTV-1 HD Sopron, MTV-2 HD, ATV (Hungary), Hir TV, MR-1 Kossuth R, MR-2 Petofi R, MR-3 Bartok R, Katolikus R
++T 818000000 8MHz 3/4 NONE QAM64 8k 1/8 NONE
+diff -r af23d23c278b util/scan/dvb-t/hu-Kekes
+--- /dev/null Thu Jan 01 00:00:00 1970 +0000
++++ b/util/scan/dvb-t/hu-Kekes Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,8 @@
++# Hungary / Kekes
++# T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
++# A1.multiplex UHF-44:
++# MTV-1 HD Budapest, MTV-2 HD, ATV (Hungary), Hir TV, MR-1 Kossuth R, MR-2 Petofi R, MR-3 Bartok R, Katolikus R
++T 658000000 8MHz 3/4 NONE QAM64 8k 1/8 NONE
++# C.multiplex UHF-69:
++# Duna TV HD, Duna-II. Autonomia, RTL Klub, TV-2 (Hungary), Euronews
++T 858000000 8MHz 3/4 NONE QAM64 8k 1/8 NONE
+diff -r af23d23c278b util/scan/dvb-t/hu-Kiskoros
+--- /dev/null Thu Jan 01 00:00:00 1970 +0000
++++ b/util/scan/dvb-t/hu-Kiskoros Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,8 @@
++# Hungary / Kiskoros
++# T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
++# A1.multiplex UHF-45:
++# MTV-1 HD Budapest, MTV-2 HD, ATV (Hungary), Hir TV, MR-1 Kossuth R, MR-2 Petofi R, MR-3 Bartok R, Katolikus R
++T 666000000 8MHz 3/4 NONE QAM64 8k 1/8 NONE
++# C.multiplex UHF-68:
++# Duna TV HD, Duna-II. Autonomia, RTL Klub, TV-2 (Hungary), Euronews
++T 850000000 8MHz 3/4 NONE QAM64 8k 1/8 NONE
+diff -r af23d23c278b util/scan/dvb-t/hu-Nagykanizsa-Ujudvar
+--- /dev/null Thu Jan 01 00:00:00 1970 +0000
++++ b/util/scan/dvb-t/hu-Nagykanizsa-Ujudvar Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,8 @@
++# Hungary / Nagykanizsa / Ujudvar
++# T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
++# A1.multiplex UHF-24:
++# MTV-1 HD Budapest, MTV-2 HD, ATV (Hungary), Hir TV, MR-1 Kossuth R, MR-2 Petofi R, MR-3 Bartok R, Katolikus R
++T 498000000 8MHz 3/4 NONE QAM64 8k 1/8 NONE
++# C.multiplex UHF-65:
++# Duna TV HD, Duna-II. Autonomia, RTL Klub, TV-2 (Hungary), Euronews
++T 826000000 8MHz 3/4 NONE QAM64 8k 1/8 NONE
+diff -r af23d23c278b util/scan/dvb-t/hu-Pecs
+--- /dev/null Thu Jan 01 00:00:00 1970 +0000
++++ b/util/scan/dvb-t/hu-Pecs Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,8 @@
++# Hungary / Pecs
++# T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
++# A1.multiplex UHF-52:
++# MTV-1 HD Budapest, MTV-2 HD, ATV (Hungary), Hir TV, MR-1 Kossuth R, MR-2 Petofi R, MR-3 Bartok R, Katolikus R
++T 722000000 8MHz 3/4 NONE QAM64 8k 1/8 NONE
++# C.multiplex UHF-67:
++# Duna TV HD, Duna-II. Autonomia, RTL Klub, TV-2 (Hungary), Euronews
++T 842000000 8MHz 3/4 NONE QAM64 8k 1/8 NONE
+diff -r af23d23c278b util/scan/dvb-t/hu-Szeged
+--- /dev/null Thu Jan 01 00:00:00 1970 +0000
++++ b/util/scan/dvb-t/hu-Szeged Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,8 @@
++# Hungary / Szeged
++# T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
++# A1.multiplex UHF-60:
++# MTV-1 HD Budapest, MTV-2 HD, ATV (Hungary), Hir TV, MR-1 Kossuth R, MR-2 Petofi R, MR-3 Bartok R, Katolikus R
++T 786000000 8MHz 3/4 NONE QAM64 8k 1/8 NONE
++# C.multiplex UHF-65:
++# Duna TV HD, Duna-II. Autonomia, RTL Klub, TV-2 (Hungary), Euronews
++T 826000000 8MHz 3/4 NONE QAM64 8k 1/8 NONE
+diff -r af23d23c278b util/scan/dvb-t/hu-Szentes
+--- /dev/null Thu Jan 01 00:00:00 1970 +0000
++++ b/util/scan/dvb-t/hu-Szentes Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,8 @@
++# Hungary / Szentes
++# T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
++# A3.multiplex UHF-60:
++# MTV-1 HD Szeged, MTV-2 HD, ATV (Hungary), Hir TV, MR-1 Kossuth R, MR-2 Petofi R, MR-3 Bartok R, Katolikus R
++T 786000000 8MHz 3/4 NONE QAM64 8k 1/8 NONE
++# C.multiplex UHF-65:
++# Duna TV HD, Duna-II. Autonomia, RTL Klub, TV-2 (Hungary), Euronews
++T 826000000 8MHz 3/4 NONE QAM64 8k 1/8 NONE
+diff -r af23d23c278b util/scan/dvb-t/hu-Tokaj
+--- /dev/null Thu Jan 01 00:00:00 1970 +0000
++++ b/util/scan/dvb-t/hu-Tokaj Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,8 @@
++# Hungary / Tokaj
++# T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
++# A1.multiplex UHF-68:
++# MTV-1 HD Budapest, MTV-2 HD, ATV (Hungary), Hir TV, MR-1 Kossuth R, MR-2 Petofi R, MR-3 Bartok R, Katolikus R
++T 850000000 8MHz 3/4 NONE QAM64 8k 1/8 NONE
++# C.multiplex UHF-63:
++# Duna TV HD, Duna-II. Autonomia, RTL Klub, TV-2 (Hungary), Euronews
++T 810000000 8MHz 3/4 NONE QAM64 8k 1/8 NONE
+diff -r af23d23c278b util/scan/dvb-t/hu-Uzd
+--- /dev/null Thu Jan 01 00:00:00 1970 +0000
++++ b/util/scan/dvb-t/hu-Uzd Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,8 @@
++# Hungary / Uzd
++# T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
++# A1.multiplex UHF-52:
++# MTV-1 HD Budapest, MTV-2 HD, ATV (Hungary), Hir TV, MR-1 Kossuth R, MR-2 Petofi R, MR-3 Bartok R, Katolikus R
++T 722000000 8MHz 3/4 NONE QAM64 8k 1/8 NONE
++# C.multiplex UHF-67:
++# Duna TV HD, Duna-II. Autonomia, RTL Klub, TV-2 (Hungary), Euronews
++T 842000000 8MHz 3/4 NONE QAM64 8k 1/8 NONE
+diff -r af23d23c278b util/scan/dvb-t/hu-Vasvar-Hegyhatsal
+--- /dev/null Thu Jan 01 00:00:00 1970 +0000
++++ b/util/scan/dvb-t/hu-Vasvar-Hegyhatsal Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,8 @@
++# Hungary / Vasvar / Hegyhatsal
++# T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
++# A1.multiplex UHF-58:
++# MTV-1 HD Budapest, MTV-2 HD, ATV (Hungary), Hir TV, MR-1 Kossuth R, MR-2 Petofi R, MR-3 Bartok R, Katolikus R
++T 770000000 8MHz 3/4 NONE QAM64 8k 1/8 NONE
++# C.multiplex UHF-68:
++# Duna TV HD, Duna-II. Autonomia, RTL Klub, TV-2 (Hungary), Euronews
++T 850000000 8MHz 3/4 NONE QAM64 8k 1/8 NONE
+diff -r af23d23c278b util/scan/dvb-t/il-All
+--- /dev/null Thu Jan 01 00:00:00 1970 +0000
++++ b/util/scan/dvb-t/il-All Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,5 @@
++# Israel, Israel Broadcasting Authority's transmitters
++# Generated from list in http://www.iba.org.il/reception/
++# T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
++T 514000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE
++T 538000000 8MHz 2/3 NONE QAM16 8k 1/4 NONE
+diff -r af23d23c278b util/scan/dvb-t/ir-Tehran
+--- /dev/null Thu Jan 01 00:00:00 1970 +0000
++++ b/util/scan/dvb-t/ir-Tehran Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,4 @@
++# DVB-T Tehran
++# T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
++T 602000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE # IRIB-TV1/2/3/4/5, IRINN, AMOUZESH, QURAN-TV
++T 650000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE # PRESS TV, AL-ALAM, AL-KOUSAR, JAAMEJAM 1, IRIB MOSTANAD, IRIB OSTANI
+diff -r af23d23c278b util/scan/dvb-t/is-Reykjavik
+--- a/util/scan/dvb-t/is-Reykjavik Sat Jun 20 16:47:55 2009 +0200
++++ b/util/scan/dvb-t/is-Reykjavik Tue Dec 21 12:13:28 2010 +0100
+@@ -1,13 +1,29 @@
+-# Initial scan config for Digital Ãsland in Iceland
+-# T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
+-T 682000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
+-T 690000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
+-T 698000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
+-T 706000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
+-T 714000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
+-T 738000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
+-T 754000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
+-T 762000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
+-T 778000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
+-T 794000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
+-T 818000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
++#------------------------------------------------------------------------------
++# file automatically generated by w_scan
++# (http://wirbel.htpc-forum.de/w_scan/index2.html)
++#! <w_scan> 20100316 1 0 OFDM IS </w_scan>
++#------------------------------------------------------------------------------
++# location and provider: <add description here>
++# date (yyyy-mm-dd) : 2010-10-22
++# provided by (opt) : <your name or email here>
++#
++# T[2] <freq> <bw> <fec_hi> <fec_lo> <mod> <tm> <guard> <hi> [# comment]
++#------------------------------------------------------------------------------
++T 522000000 8MHz 2/3 NONE QAM64 8k 1/16 NONE
++T 530000000 8MHz 2/3 NONE QAM64 8k 1/16 NONE # Vodafone
++T 538000000 8MHz 2/3 NONE QAM64 8k 1/16 NONE
++T 674000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE # Vodafone
++T 770000000 8MHz 1/2 NONE QAM64 2k 1/32 NONE # Vodafone
++T 690000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE # Vodafone
++T 722000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE # Vodafone
++T 738000000 8MHz 1/2 NONE QPSK 2k 1/32 NONE # Vodafone
++T 754000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE # Vodafone
++T 762000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE # Vodafone
++T 778000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE # Vodafone
++T 818000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE # Vodafone
++T 714000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE # Vodafone
++T 682000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE # Vodafone
++T 698000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE # Vodafone
++T 706000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE # Vodafone
++T 794000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE # Vodafone
++T 802000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE # Vodafone
+diff -r af23d23c278b util/scan/dvb-t/it-Milano
+--- a/util/scan/dvb-t/it-Milano Sat Jun 20 16:47:55 2009 +0200
++++ b/util/scan/dvb-t/it-Milano Tue Dec 21 12:13:28 2010 +0100
+@@ -1,15 +1,49 @@
+ # T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
+ # MUX-A RAI
+-T 818000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
++T 800000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
++T 490000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
+ # MUX-B RAI
+ T 482000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
+ # MUX-A MEDIASET
+ T 842000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
+ # MUX-A MEDIASET-2
+ T 618000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
++# MEDIASET LA 5
++T 538000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
+ # MUX La7/MTV
+-T 506000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
++T 802000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
+ # MUX DFREE
+ T 706000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
+ # MUX DFREE 2
+ T 538000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
++# MUX RETE A
++T 714000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
++# MUX STUDIO1
++T 184500000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
++# MUX STUDIO NORD
++T 191500000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
++# MUX VIDEO STAR NOVARA
++T 219500000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
++# MUX TELENOVA
++T 474000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
++# MUX TELE 7 LAGHI
++T 495250000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
++# MUX VIDEO BERGAMO
++T 594000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
++# MUX TELE MILANO
++T 602000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
++# RETE 55
++T 682000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
++# TELE LIBERTA'
++T 735250000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
++# RSI
++T 762000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
++# TELE COLOR PRIMARETE
++T 783250000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
++T 786000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
++# TELESTAR
++T 807250000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
++T 810000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
++# TELECAMPIONE
++T 847250000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
++T 850000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
+diff -r af23d23c278b util/scan/dvb-t/it-Montevergine
+--- /dev/null Thu Jan 01 00:00:00 1970 +0000
++++ b/util/scan/dvb-t/it-Montevergine Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,18 @@
++# DVB-T Montevergine (Avellino) 83100
++# 12/12/2009 by Antonio Galasso anto1714@libero.it
++# (ricordati di mettere il lettore in posizione stop orima di iniziare la scansione dei canali)
++# T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
++# C-MUX
++T 177500000 7MHz 2/3 NONE QAM64 8k 1/32 NONE
++T 482000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
++T 498000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
++T 514000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
++T 522000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
++T 530000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
++T 546000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
++T 554000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
++T 594000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
++T 642000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE
++T 682000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
++T 690000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
++T 698000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
+diff -r af23d23c278b util/scan/dvb-t/lt-All
+--- /dev/null Thu Jan 01 00:00:00 1970 +0000
++++ b/util/scan/dvb-t/lt-All Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,39 @@
++# Lithuania, whole country
++# Created from http://www.skaitmenine.lt/lt/skaitmenine_tv_lietuvoje/antzemine_dvb_t.html
++# Created by baruse@gmail.com
++
++# LRTC I tinklas
++T 482000000 8MHz AUTO NONE QAM64 8k 1/16 NONE # kanalas 22
++T 514000000 8MHz AUTO NONE QAM64 8k 1/16 NONE # kanalas 26
++T 618000000 8MHz AUTO NONE QAM64 8k 1/16 NONE # kanalas 39
++T 658000000 8MHz AUTO NONE QAM64 8k 1/16 NONE # kanalas 44
++T 682000000 8MHz AUTO NONE QAM64 8k 1/16 NONE # kanalas 47
++T 762000000 8MHz AUTO NONE QAM64 8k 1/16 NONE # kanalas 57
++T 770000000 8MHz AUTO NONE QAM64 8k 1/16 NONE # kanalas 58
++T 786000000 8MHz AUTO NONE QAM64 8k 1/16 NONE # kanalas 60
++T 794000000 8MHz AUTO NONE QAM64 8k 1/16 NONE # kanalas 61
++
++# LRTC II tinklas
++T 570000000 8MHz AUTO NONE QAM64 8k 1/16 NONE # kanalas 33
++T 610000000 8MHz AUTO NONE QAM64 8k 1/16 NONE # kanalas 38
++T 690000000 8MHz AUTO NONE QAM64 8k 1/16 NONE # kanalas 48
++T 738000000 8MHz AUTO NONE QAM64 8k 1/16 NONE # kanalas 54
++T 802000000 8MHz AUTO NONE QAM64 8k 1/16 NONE # kanalas 62
++T 810000000 8MHz AUTO NONE QAM64 8k 1/16 NONE # kanalas 63
++T 818000000 8MHz AUTO NONE QAM64 8k 1/16 NONE # kanalas 64
++
++# TEO LT I tinklas
++T 594000000 8MHz AUTO NONE QAM64 8k 1/16 NONE # kanalas 36
++T 706000000 8MHz AUTO NONE QAM64 8k 1/16 NONE # kanalas 50
++T 778000000 8MHz AUTO NONE QAM64 8k 1/16 NONE # kanalas 59
++T 826000000 8MHz AUTO NONE QAM64 8k 1/16 NONE # kanalas 65
++
++# TEO LT II tinklas
++T 474000000 8MHz AUTO NONE QAM64 8k 1/16 NONE # kanalas 21
++T 546000000 8MHz AUTO NONE QAM64 8k 1/16 NONE # kanalas 30
++T 730000000 8MHz AUTO NONE QAM64 8k 1/16 NONE # kanalas 53
++#T 786000000 8MHz AUTO NONE QAM64 8k 1/16 NONE # kanalas 60
++
++# Vilniui bonusas
++T 602000000 8MHz AUTO NONE QAM64 8k 1/16 NONE # kanalas 37
++#T 730000000 8MHz AUTO NONE QAM64 8k 1/16 NONE # kanalas 53
+diff -r af23d23c278b util/scan/dvb-t/ro-Bucharest
+--- /dev/null Thu Jan 01 00:00:00 1970 +0000
++++ b/util/scan/dvb-t/ro-Bucharest Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,5 @@
++# Romania / Bucharest
++# T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
++T 546000000 8MHz 2/3 NONE QAM16 8k 1/16 NONE
++T 738000000 8MHz 2/3 NONE QAM64 8k 1/16 NONE # SRTV
++T 778000000 8MHz 2/3 NONE QAM64 8k 1/16 NONE # SNR DVB-T
+diff -r af23d23c278b util/scan/dvb-t/se-Horby_Sallerup
+--- a/util/scan/dvb-t/se-Horby_Sallerup Sat Jun 20 16:47:55 2009 +0200
++++ b/util/scan/dvb-t/se-Horby_Sallerup Tue Dec 21 12:13:28 2010 +0100
+@@ -2,6 +2,8 @@
+ # T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
+ T 482000000 8MHz 3/4 NONE QAM64 8k 1/4 NONE
+ T 506000000 8MHz 3/4 NONE QAM64 8k 1/4 NONE
++T 570000000 8MHz 3/4 NONE QAM64 8k 1/4 NONE
+ T 634000000 8MHz 3/4 NONE QAM64 8k 1/4 NONE
++T 650000000 8MHz 3/4 NONE QAM64 8k 1/4 NONE
+ T 818000000 8MHz 3/4 NONE QAM64 8k 1/4 NONE
+ T 794000000 8MHz 3/4 NONE QAM64 8k 1/4 NONE
+diff -r af23d23c278b util/scan/dvb-t/se-Ornskoldsvik_As
+--- a/util/scan/dvb-t/se-Ornskoldsvik_As Sat Jun 20 16:47:55 2009 +0200
++++ b/util/scan/dvb-t/se-Ornskoldsvik_As Tue Dec 21 12:13:28 2010 +0100
+@@ -4,3 +4,4 @@
+ T 474000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE
+ T 578000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE
+ T 506000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE
++T 642000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE
+diff -r af23d23c278b util/scan/dvb-t/se-Skelleftea
+--- a/util/scan/dvb-t/se-Skelleftea Sat Jun 20 16:47:55 2009 +0200
++++ b/util/scan/dvb-t/se-Skelleftea Tue Dec 21 12:13:28 2010 +0100
+@@ -4,3 +4,4 @@
+ T 514000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE
+ T 778000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE
+ T 650000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE
++T 698000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE
+diff -r af23d23c278b util/scan/dvb-t/si-Ljubljana
+--- /dev/null Thu Jan 01 00:00:00 1970 +0000
++++ b/util/scan/dvb-t/si-Ljubljana Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,5 @@
++# Slovenia / Ljubljana
++# MULTIPLEX A
++#------------------------------------------
++T 602000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
++T 514000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE
+diff -r af23d23c278b util/scan/dvb-t/sk-BanskaBystrica
+--- a/util/scan/dvb-t/sk-BanskaBystrica Sat Jun 20 16:47:55 2009 +0200
++++ b/util/scan/dvb-t/sk-BanskaBystrica Tue Dec 21 12:13:28 2010 +0100
+@@ -1,4 +1,11 @@
+ # DVB-T Banska Bystrica (Banska Bystrica, Slovak Republic)
+ # T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
+
+-T 778000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE
++# 1.st multiplex - on channel 65
++T 826000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
++
++# 2.st multiplex (commercial) - on channel 51
++T 714000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
++
++# 3.st multiplex (public) - on channel 33
++T 570000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
+diff -r af23d23c278b util/scan/dvb-t/sk-Bardejov
+--- /dev/null Thu Jan 01 00:00:00 1970 +0000
++++ b/util/scan/dvb-t/sk-Bardejov Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,11 @@
++# DVB-T Bardejov (Bardejov, Slovak Republic)
++# T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
++
++# 1.st multiplex - on channel 62
++T 802000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
++
++# 2.st multiplex (commercial) - on channel 40
++T 626000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
++
++# 3.st multiplex (public) - on channel 54
++T 738000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
+diff -r af23d23c278b util/scan/dvb-t/sk-Bratislava
+--- a/util/scan/dvb-t/sk-Bratislava Sat Jun 20 16:47:55 2009 +0200
++++ b/util/scan/dvb-t/sk-Bratislava Tue Dec 21 12:13:28 2010 +0100
+@@ -1,4 +1,11 @@
+ # DVB-T Bratislava (Bratislava, Slovak Republic)
+ # T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
+
+-T 834000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE
++# 1.st multiplex - on channel 66
++T 834000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
++
++# 2.st multiplex (commercial) - on channel 56
++T 754000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
++
++# 3.st multiplex (public) - on channel 27
++T 522000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
+diff -r af23d23c278b util/scan/dvb-t/sk-Kosice
+--- a/util/scan/dvb-t/sk-Kosice Sat Jun 20 16:47:55 2009 +0200
++++ b/util/scan/dvb-t/sk-Kosice Tue Dec 21 12:13:28 2010 +0100
+@@ -1,4 +1,11 @@
+ # DVB-T Kosice (Kosice, Slovak Republic)
+ # T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
+
+-T 658000000 8MHz 2/3 NONE QAM64 8k 1/8 NONE
++# 1.st multiplex - on channel 64
++T 818000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
++
++# 2.st multiplex (commercial) - on channel 59
++T 778000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
++
++# 3.st multiplex (public) - on channel 25
++T 506000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
+diff -r af23d23c278b util/scan/dvb-t/sk-Michalovce
+--- /dev/null Thu Jan 01 00:00:00 1970 +0000
++++ b/util/scan/dvb-t/sk-Michalovce Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,11 @@
++# DVB-T Michalovce (Michalovce, Slovak Republic)
++# T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
++
++# 1.st multiplex - on channel 64
++T 818000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
++
++# 2.st multiplex (commercial) - on channel 59
++T 778000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
++
++# 3.st multiplex (public) - on channel 25
++T 506000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
+diff -r af23d23c278b util/scan/dvb-t/sk-Namestovo
+--- /dev/null Thu Jan 01 00:00:00 1970 +0000
++++ b/util/scan/dvb-t/sk-Namestovo Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,11 @@
++# DVB-T Namestovo (Namestovo, Slovak Republic)
++# T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
++
++# 1.st multiplex - on channel 68
++T 850000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
++
++# 2.st multiplex (commercial) - on channel 59
++T 778000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
++
++# 3.st multiplex (public) - on channel 26
++T 514000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
+diff -r af23d23c278b util/scan/dvb-t/sk-Poprad
+--- /dev/null Thu Jan 01 00:00:00 1970 +0000
++++ b/util/scan/dvb-t/sk-Poprad Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,11 @@
++# DVB-T Poprad (Poprad, Slovak Republic)
++# T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
++
++# 1.st multiplex - on channel 66
++T 834000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
++
++# 2.st multiplex (commercial) - on channel 55
++T 746000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
++
++# 3.st multiplex (public) - on channel 24
++T 498000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
+diff -r af23d23c278b util/scan/dvb-t/sk-RimavskaSobota
+--- /dev/null Thu Jan 01 00:00:00 1970 +0000
++++ b/util/scan/dvb-t/sk-RimavskaSobota Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,11 @@
++# DVB-T Rimavska Sobota (Rimavska Sobota, Slovak Republic)
++# T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
++
++# 1.st multiplex - on channel 61
++T 794000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
++
++# 2.st multiplex (commercial) - on channel 27
++T 522000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
++
++# 3.st multiplex (public) - on channel 54
++T 738000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
+diff -r af23d23c278b util/scan/dvb-t/sk-Trencin
+--- /dev/null Thu Jan 01 00:00:00 1970 +0000
++++ b/util/scan/dvb-t/sk-Trencin Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,12 @@
++# DVB-T Trencin (Trencin, Slovak Republic)
++# T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
++
++# 1.st multiplex - on channel 69
++T 858000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
++
++# 2.st multiplex (commercial) - on channel 52/56
++T 722000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
++T 754000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
++
++# 3.st multiplex (public) - on channel 57
++T 762000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
+diff -r af23d23c278b util/scan/dvb-t/sk-VelkyKrtis
+--- /dev/null Thu Jan 01 00:00:00 1970 +0000
++++ b/util/scan/dvb-t/sk-VelkyKrtis Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,11 @@
++# DVB-T Velky Krtis (Velky Krtis, Slovak Republic)
++# T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
++
++# 1.st multiplex - on channel 65
++T 826000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
++
++# 2.st multiplex (commercial) - on channel 60
++T 786000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
++
++# 3.st multiplex (public) - on channel 33
++T 570000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
+diff -r af23d23c278b util/scan/dvb-t/sk-Zilina
+--- /dev/null Thu Jan 01 00:00:00 1970 +0000
++++ b/util/scan/dvb-t/sk-Zilina Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,11 @@
++# DVB-T Zilina (Zilina, Slovak Republic)
++# T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
++
++# 1.st multiplex - on channel 68
++T 850000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
++
++# 2.st multiplex (commercial) - on channel 52
++T 722000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
++
++# 3.st multiplex (public) - on channel 32
++T 562000000 8MHz 2/3 NONE QAM64 8k 1/4 NONE
+diff -r af23d23c278b util/scan/dvb-t/uk-Aberdare
+--- a/util/scan/dvb-t/uk-Aberdare Sat Jun 20 16:47:55 2009 +0200
++++ b/util/scan/dvb-t/uk-Aberdare Tue Dec 21 12:13:28 2010 +0100
+@@ -2,9 +2,14 @@
+ # Auto-generated from http://www.dtg.org.uk/retailer/dtt_channels.html
+ # and http://www.ofcom.org.uk/static/reception_advice/index.asp.html
+ # T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
+-T 530167000 8MHz 3/4 NONE QAM16 2k 1/32 NONE
+-T 562167000 8MHz 2/3 NONE QAM64 2k 1/32 NONE
+-T 489833000 8MHz 2/3 NONE QAM64 2k 1/32 NONE
+-T 513833000 8MHz 3/4 NONE QAM16 2k 1/32 NONE
+-T 538167000 8MHz 3/4 NONE QAM16 2k 1/32 NONE
+-T 570167000 8MHz 3/4 NONE QAM16 2k 1/32 NONE
++
++T 474167000 8MHz 2/3 NONE QAM64 2k 1/32 NONE
++T 482167000 8MHz 2/3 NONE QAM64 2k 1/32 NONE
++T 497833000 8MHz 2/3 NONE QAM64 2k 1/32 NONE
++T 506167000 8MHz 2/3 NONE QAM64 2k 1/32 NONE
++T 521833000 8MHz 2/3 NONE QAM64 2k 1/32 NONE
++T 530167000 8MHz 2/3 NONE QAM64 2k 1/32 NONE
++
++
++#C21+ C22+ C24- C25+ C27- C28+
++
+diff -r af23d23c278b util/scan/dvb-t/uk-Redruth
+--- a/util/scan/dvb-t/uk-Redruth Sat Jun 20 16:47:55 2009 +0200
++++ b/util/scan/dvb-t/uk-Redruth Tue Dec 21 12:13:28 2010 +0100
+@@ -2,9 +2,12 @@
+ # Auto-generated from http://www.dtg.org.uk/retailer/dtt_channels.html
+ # and http://www.ofcom.org.uk/static/reception_advice/index.asp.html
+ # T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
+-T 618000000 8MHz 3/4 NONE QAM16 2k 1/32 NONE
+-T 642167000 8MHz 2/3 NONE QAM64 2k 1/32 NONE
+-T 666167000 8MHz 2/3 NONE QAM64 2k 1/32 NONE
+-T 697833000 8MHz 3/4 NONE QAM16 2k 1/32 NONE
++T 474167000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
++T 497833000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
++T 506167000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
++T 521833000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
++T 634167000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
+ T 650167000 8MHz 3/4 NONE QAM16 2k 1/32 NONE
+-T 705833000 8MHz 3/4 NONE QAM16 2k 1/32 NONE
++T 658167000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
++T 690000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
++T 714000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
+diff -r af23d23c278b util/scan/dvb-t/uk-StocklandHill
+--- a/util/scan/dvb-t/uk-StocklandHill Sat Jun 20 16:47:55 2009 +0200
++++ b/util/scan/dvb-t/uk-StocklandHill Tue Dec 21 12:13:28 2010 +0100
+@@ -1,10 +1,9 @@
+ # UK, Stockland Hill
+-# Auto-generated from http://www.dtg.org.uk/retailer/dtt_channels.html
+-# and http://www.ofcom.org.uk/static/reception_advice/index.asp.html
++# http://www.ukfree.tv/txdetail.php?a=ST222014
+ # T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
+-T 481833000 8MHz 3/4 NONE QAM16 2k 1/32 NONE
+-T 529833000 8MHz 2/3 NONE QAM64 2k 1/32 NONE
+-T 505833000 8MHz 2/3 NONE QAM64 2k 1/32 NONE
+-T 561833000 8MHz 3/4 NONE QAM16 2k 1/32 NONE
+-T 546167000 8MHz 3/4 NONE QAM16 2k 1/32 NONE
+-T 578167000 8MHz 3/4 NONE QAM16 2k 1/32 NONE
++T 514167000 8MHz 2/3 NONE QAM64 8k 1/32 NONE # PSB1
++T 490167000 8MHz 2/3 NONE QAM64 8k 1/32 NONE # PSB2
++#T 538167000 8MHz 2/3 NONE QAM64 8k 1/32 NONE # PSB3 (DVB-T2)
++T 505833000 8MHz 2/3 NONE QAM64 8k 1/32 NONE # COM4
++T 481833000 8MHz 2/3 NONE QAM64 8k 1/32 NONE # COM5
++T 529833000 8MHz 2/3 NONE QAM64 8k 1/32 NONE # COM6
+diff -r af23d23c278b util/scan/dvb-t/uk-Storeton
+--- a/util/scan/dvb-t/uk-Storeton Sat Jun 20 16:47:55 2009 +0200
++++ b/util/scan/dvb-t/uk-Storeton Tue Dec 21 12:13:28 2010 +0100
+@@ -2,9 +2,12 @@
+ # Auto-generated from http://www.dtg.org.uk/retailer/dtt_channels.html
+ # and http://www.ofcom.org.uk/static/reception_advice/index.asp.html
+ # T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
+-T 546167000 8MHz 3/4 NONE QAM16 2k 1/32 NONE
+-T 578167000 8MHz 2/3 NONE QAM64 2k 1/32 NONE
+-T 490167000 8MHz 2/3 NONE QAM64 2k 1/32 NONE
+-T 514167000 8MHz 3/4 NONE QAM16 2k 1/32 NONE
+-T 538167000 8MHz 3/4 NONE QAM16 2k 1/32 NONE
+-T 570167000 8MHz 3/4 NONE QAM16 2k 1/32 NONE
++T 490000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
++T 506000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
++T 514000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
++T 530000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
++T 538000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
++T 546000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
++T 730000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
++T 762000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
++T 786000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
+diff -r af23d23c278b util/scan/dvb-t/uk-WinterHill
+--- a/util/scan/dvb-t/uk-WinterHill Sat Jun 20 16:47:55 2009 +0200
++++ b/util/scan/dvb-t/uk-WinterHill Tue Dec 21 12:13:28 2010 +0100
+@@ -1,13 +1,9 @@
+ # UK, Winter Hill
+-# Auto-generated from http://www.dtg.org.uk/retailer/dtt_channels.html
+-# and http://www.ofcom.org.uk/static/reception_advice/index.asp.html
++# Populated by J. Hornsby from a scan of active multiplexes
++# UK, Winter Hill B Ceased broadcasting on 02 December 2009
+ # T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
+-T 754167000 8MHz 3/4 NONE QAM16 2k 1/32 NONE
+-T 834167000 8MHz 2/3 NONE QAM64 2k 1/32 NONE
+-T 850167000 8MHz 2/3 NONE QAM64 2k 1/32 NONE
+-T 842167000 8MHz 3/4 NONE QAM16 2k 1/32 NONE
+-T 786167000 8MHz 3/4 NONE QAM16 2k 1/32 NONE
+-T 810167000 8MHz 3/4 NONE QAM16 2k 1/32 NONE
+-# UK, Winter Hill B
+-T 650000000 8MHz 3/4 NONE QAM16 2k 1/32 NONE
+-T 626000000 8MHz 3/4 NONE QAM16 2k 1/32 NONE
++T 746000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
++T 770000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
++T 778000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
++T 794000000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
++T 801833000 8MHz 2/3 NONE QAM64 8k 1/32 NONE
+diff -r af23d23c278b util/scan/dvb-t/vn-Thaibinh
+--- /dev/null Thu Jan 01 00:00:00 1970 +0000
++++ b/util/scan/dvb-t/vn-Thaibinh Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,5 @@
++# Thaibinh - Vietnam - DVB-T by VTC
++# contributed by Pham Thanh Nam <phamthanhnam.ptn@gmail.com>
++# T freq bw fec_hi fec_lo mod transmission-mode guard-interval hierarchy
++T 626000000 8MHz 3/4 NONE QAM64 2k 1/32 NONE
++T 634000000 8MHz 3/4 NONE QAM64 2k 1/32 NONE
+diff -r af23d23c278b util/scan/scan.c
+--- a/util/scan/scan.c Sat Jun 20 16:47:55 2009 +0200
++++ b/util/scan/scan.c Tue Dec 21 12:13:28 2010 +0100
+@@ -236,6 +236,17 @@
+
+ static void copy_transponder(struct transponder *d, struct transponder *s)
+ {
++ struct list_head *pos;
++ struct service *service;
++
++ if (d->transport_stream_id != s->transport_stream_id) {
++ /* propagate change to any already allocated services */
++ list_for_each(pos, &d->services) {
++ service = list_entry(pos, struct service, list);
++ service->transport_stream_id = s->transport_stream_id;
++ }
++ }
++
+ d->network_id = s->network_id;
+ d->original_network_id = s->original_network_id;
+ d->transport_stream_id = s->transport_stream_id;
+diff -r af23d23c278b util/szap/Makefile
+--- a/util/szap/Makefile Sat Jun 20 16:47:55 2009 +0200
++++ b/util/szap/Makefile Tue Dec 21 12:13:28 2010 +0100
+@@ -1,6 +1,6 @@
+ # Makefile for linuxtv.org dvb-apps/util/szap
+
+-objects = lnb.o
++objects = lnb.o util.o
+
+ binaries = azap \
+ czap \
+diff -r af23d23c278b util/szap/azap.c
+--- a/util/szap/azap.c Sat Jun 20 16:47:55 2009 +0200
++++ b/util/szap/azap.c Tue Dec 21 12:13:28 2010 +0100
+@@ -13,6 +13,8 @@
+ #include <linux/dvb/frontend.h>
+ #include <linux/dvb/dmx.h>
+
++#include "util.h"
++
+ static char FRONTEND_DEV [80];
+ static char DEMUX_DEV [80];
+
+@@ -209,31 +211,6 @@
+
+
+ static
+-int set_pesfilter (int fd, int pid, dmx_pes_type_t type, int dvr)
+-{
+- struct dmx_pes_filter_params pesfilter;
+-
+- if (pid <= 0 || pid >= 0x1fff)
+- return 0;
+-
+- pesfilter.pid = pid;
+- pesfilter.input = DMX_IN_FRONTEND;
+- pesfilter.output = dvr ? DMX_OUT_TS_TAP : DMX_OUT_DECODER;
+- pesfilter.pes_type = type;
+- pesfilter.flags = DMX_IMMEDIATE_START;
+-
+- if (ioctl(fd, DMX_SET_PES_FILTER, &pesfilter) < 0) {
+- PERROR ("ioctl(DMX_SET_PES_FILTER) for %s PID failed",
+- type == DMX_PES_AUDIO ? "Audio" :
+- type == DMX_PES_VIDEO ? "Video" : "??");
+- return -1;
+- }
+-
+- return 0;
+-}
+-
+-
+-static
+ int setup_frontend (int fe_fd, struct dvb_frontend_parameters *frontend)
+ {
+ struct dvb_frontend_info fe_info;
+diff -r af23d23c278b util/szap/czap.c
+--- a/util/szap/czap.c Sat Jun 20 16:47:55 2009 +0200
++++ b/util/szap/czap.c Tue Dec 21 12:13:28 2010 +0100
+@@ -13,6 +13,8 @@
+ #include <linux/dvb/frontend.h>
+ #include <linux/dvb/dmx.h>
+
++#include "util.h"
++
+
+ static char FRONTEND_DEV [80];
+ static char DEMUX_DEV [80];
+@@ -118,7 +120,7 @@
+
+
+ int parse(const char *fname, int list_channels, int chan_no, const char *channel,
+- struct dvb_frontend_parameters *frontend, int *vpid, int *apid)
++ struct dvb_frontend_parameters *frontend, int *vpid, int *apid, int *sid)
+ {
+ FILE *f;
+ char *chan;
+@@ -141,10 +143,10 @@
+ }
+ printf("%3d %s", chan_no, chan);
+
+- if ((sscanf(chan, "%a[^:]:%d:%a[^:]:%d:%a[^:]:%a[^:]:%d:%d\n",
++ if ((sscanf(chan, "%m[^:]:%d:%m[^:]:%d:%m[^:]:%m[^:]:%d:%d:%d\n",
+ &name, &frontend->frequency,
+ &inv, &frontend->u.qam.symbol_rate,
+- &fec, &mod, vpid, apid) != 8)
++ &fec, &mod, vpid, apid, sid) != 9)
+ || !name || !inv || !fec | !mod) {
+ ERROR("cannot parse service data");
+ return -3;
+@@ -165,10 +167,10 @@
+ ERROR("modulation field syntax '%s'", mod);
+ return -6;
+ }
+- printf("%3d %s: f %d, s %d, i %d, fec %d, qam %d, v %#x, a %#x\n",
++ printf("%3d %s: f %d, s %d, i %d, fec %d, qam %d, v %#x, a %#x, s %#x \n",
+ chan_no, name, frontend->frequency, frontend->u.qam.symbol_rate,
+ frontend->inversion, frontend->u.qam.fec_inner,
+- frontend->u.qam.modulation, *vpid, *apid);
++ frontend->u.qam.modulation, *vpid, *apid, *sid);
+ free(name);
+ free(inv);
+ free(fec);
+@@ -178,31 +180,6 @@
+ }
+
+
+-
+-static
+-int set_pesfilter (int fd, int pid, dmx_pes_type_t type, int dvr)
+-{
+- struct dmx_pes_filter_params pesfilter;
+-
+- if (pid <= 0 || pid >= 0x1fff)
+- return 0;
+-
+- pesfilter.pid = pid;
+- pesfilter.input = DMX_IN_FRONTEND;
+- pesfilter.output = dvr ? DMX_OUT_TS_TAP : DMX_OUT_DECODER;
+- pesfilter.pes_type = type;
+- pesfilter.flags = DMX_IMMEDIATE_START;
+-
+- if (ioctl(fd, DMX_SET_PES_FILTER, &pesfilter) < 0) {
+- PERROR ("ioctl(DMX_SET_PES_FILTER) for %s PID failed",
+- type == DMX_PES_AUDIO ? "Audio" :
+- type == DMX_PES_VIDEO ? "Video" : "??");
+- return -1;
+- }
+-
+- return 0;
+-}
+-
+ static
+ int setup_frontend(int fe_fd, struct dvb_frontend_parameters *frontend)
+ {
+@@ -264,9 +241,20 @@
+ }
+
+
+-static const char *usage = "\nusage: %s [-a adapter_num] [-f frontend_id] [-d demux_id] [-c conf_file] [ -H ] {<channel name>| -n channel_num} [-x]\n"
+- " or: %s [-c conf_file] -l\n\n";
+-
++static const char *usage =
++ "\nusage: %s [options] -l\n"
++ " list known channels\n"
++ " %s [options] {-n channel-number|channel_name}\n"
++ " zap to channel via number or full name (case insensitive)\n"
++ " -a number : use given adapter (default 0)\n"
++ " -f number : use given frontend (default 0)\n"
++ " -d number : use given demux (default 0)\n"
++ " -c file : read channels list from 'file'\n"
++ " -x : exit after tuning\n"
++ " -H : human readable output\n"
++ " -r : set up /dev/dvb/adapterX/dvr0 for TS recording\n"
++ " -p : add pat and pmt to TS recording (implies -r)\n"
++;
+
+ int main(int argc, char **argv)
+ {
+@@ -275,12 +263,12 @@
+ char *confname = NULL;
+ char *channel = NULL;
+ int adapter = 0, frontend = 0, demux = 0, dvr = 0;
+- int vpid, apid;
+- int frontend_fd, video_fd, audio_fd;
++ int vpid, apid, sid, pmtpid = 0;
++ int frontend_fd, video_fd, audio_fd, pat_fd, pmt_fd;
+ int opt, list_channels = 0, chan_no = 0;
+- int human_readable = 0;
++ int human_readable = 0, rec_psi = 0;
+
+- while ((opt = getopt(argc, argv, "Hln:hrn:a:f:d:c:x")) != -1) {
++ while ((opt = getopt(argc, argv, "Hln:hrn:a:f:d:c:x:p")) != -1) {
+ switch (opt) {
+ case 'a':
+ adapter = strtoul(optarg, NULL, 0);
+@@ -300,6 +288,9 @@
+ case 'n':
+ chan_no = strtoul(optarg, NULL, 0);
+ break;
++ case 'p':
++ rec_psi = 1;
++ break;
+ case 'x':
+ exit_after_tuning = 1;
+ break;
+@@ -352,7 +343,7 @@
+
+ memset(&frontend_param, 0, sizeof(struct dvb_frontend_parameters));
+
+- if (parse(confname, list_channels, chan_no, channel, &frontend_param, &vpid, &apid))
++ if (parse(confname, list_channels, chan_no, channel, &frontend_param, &vpid, &apid, &sid))
+ return -1;
+ if (list_channels)
+ return 0;
+@@ -365,6 +356,28 @@
+ if (setup_frontend(frontend_fd, &frontend_param) < 0)
+ return -1;
+
++ if (rec_psi) {
++ pmtpid = get_pmt_pid(DEMUX_DEV, sid);
++ if (pmtpid <= 0) {
++ fprintf(stderr,"couldn't find pmt-pid for sid %04x\n",sid);
++ return -1;
++ }
++
++ if ((pat_fd = open(DEMUX_DEV, O_RDWR)) < 0) {
++ perror("opening pat demux failed");
++ return -1;
++ }
++ if (set_pesfilter(pat_fd, 0, DMX_PES_OTHER, dvr) < 0)
++ return -1;
++
++ if ((pmt_fd = open(DEMUX_DEV, O_RDWR)) < 0) {
++ perror("opening pmt demux failed");
++ return -1;
++ }
++ if (set_pesfilter(pmt_fd, pmtpid, DMX_PES_OTHER, dvr) < 0)
++ return -1;
++ }
++
+ if ((video_fd = open(DEMUX_DEV, O_RDWR)) < 0) {
+ PERROR("failed opening '%s'", DEMUX_DEV);
+ return -1;
+@@ -383,6 +396,8 @@
+
+ check_frontend (frontend_fd, human_readable);
+
++ close (pat_fd);
++ close (pmt_fd);
+ close (audio_fd);
+ close (video_fd);
+ close (frontend_fd);
+diff -r af23d23c278b util/szap/szap.c
+--- a/util/szap/szap.c Sat Jun 20 16:47:55 2009 +0200
++++ b/util/szap/szap.c Tue Dec 21 12:13:28 2010 +0100
+@@ -48,6 +48,7 @@
+ #include <linux/dvb/dmx.h>
+ #include <linux/dvb/audio.h>
+ #include "lnb.h"
++#include "util.h"
+
+ #ifndef TRUE
+ #define TRUE (1==1)
+@@ -92,94 +93,6 @@
+ " -p : add pat and pmt to TS recording (implies -r)\n"
+ " or -n numbers for zapping\n";
+
+-static int set_demux(int dmxfd, int pid, int pes_type, int dvr)
+-{
+- struct dmx_pes_filter_params pesfilter;
+-
+- if (pid < 0 || pid >= 0x1fff) /* ignore this pid to allow radio services */
+- return TRUE;
+-
+- if (dvr) {
+- int buffersize = 64 * 1024;
+- if (ioctl(dmxfd, DMX_SET_BUFFER_SIZE, buffersize) == -1)
+- perror("DMX_SET_BUFFER_SIZE failed");
+- }
+-
+- pesfilter.pid = pid;
+- pesfilter.input = DMX_IN_FRONTEND;
+- pesfilter.output = dvr ? DMX_OUT_TS_TAP : DMX_OUT_DECODER;
+- pesfilter.pes_type = pes_type;
+- pesfilter.flags = DMX_IMMEDIATE_START;
+-
+- if (ioctl(dmxfd, DMX_SET_PES_FILTER, &pesfilter) == -1) {
+- fprintf(stderr, "DMX_SET_PES_FILTER failed "
+- "(PID = 0x%04x): %d %m\n", pid, errno);
+- return FALSE;
+- }
+-
+- return TRUE;
+-}
+-
+-int get_pmt_pid(char *dmxdev, int sid)
+-{
+- int patfd, count;
+- int pmt_pid = 0;
+- int patread = 0;
+- int section_length;
+- unsigned char buft[4096];
+- unsigned char *buf = buft;
+- struct dmx_sct_filter_params f;
+-
+- memset(&f, 0, sizeof(f));
+- f.pid = 0;
+- f.filter.filter[0] = 0x00;
+- f.filter.mask[0] = 0xff;
+- f.timeout = 0;
+- f.flags = DMX_IMMEDIATE_START | DMX_CHECK_CRC;
+-
+- if ((patfd = open(dmxdev, O_RDWR)) < 0) {
+- perror("openening pat demux failed");
+- return -1;
+- }
+-
+- if (ioctl(patfd, DMX_SET_FILTER, &f) == -1) {
+- perror("ioctl DMX_SET_FILTER failed");
+- close(patfd);
+- return -1;
+- }
+-
+- while (!patread){
+- if (((count = read(patfd, buf, sizeof(buft))) < 0) && errno == EOVERFLOW)
+- count = read(patfd, buf, sizeof(buft));
+- if (count < 0) {
+- perror("read_sections: read error");
+- close(patfd);
+- return -1;
+- }
+-
+- section_length = ((buf[1] & 0x0f) << 8) | buf[2];
+- if (count != section_length + 3)
+- continue;
+-
+- buf += 8;
+- section_length -= 8;
+-
+- patread = 1; /* assumes one section contains the whole pat */
+- while (section_length > 0) {
+- int service_id = (buf[0] << 8) | buf[1];
+- if (service_id == sid) {
+- pmt_pid = ((buf[2] & 0x1f) << 8) | buf[3];
+- section_length = 0;
+- }
+- buf += 4;
+- section_length -= 4;
+- }
+- }
+-
+- close(patfd);
+- return pmt_pid;
+-}
+-
+ struct diseqc_cmd {
+ struct dvb_diseqc_master_cmd cmd;
+ uint32_t wait;
+@@ -390,10 +303,10 @@
+
+ if (diseqc(fefd, sat_no, pol, hiband))
+ if (do_tune(fefd, ifreq, sr))
+- if (set_demux(dmxfdv, vpid, DMX_PES_VIDEO, dvr))
++ if (set_pesfilter(dmxfdv, vpid, DMX_PES_VIDEO, dvr))
+ if (audiofd >= 0)
+ (void)ioctl(audiofd, AUDIO_SET_BYPASS_MODE, bypass);
+- if (set_demux(dmxfda, apid, DMX_PES_AUDIO, dvr)) {
++ if (set_pesfilter(dmxfda, apid, DMX_PES_AUDIO, dvr)) {
+ if (rec_psi) {
+ pmtpid = get_pmt_pid(dmxdev, sid);
+ if (pmtpid < 0) {
+@@ -403,8 +316,8 @@
+ fprintf(stderr,"couldn't find pmt-pid for sid %04x\n",sid);
+ result = FALSE;
+ }
+- if (set_demux(patfd, 0, DMX_PES_OTHER, dvr))
+- if (set_demux(pmtfd, pmtpid, DMX_PES_OTHER, dvr))
++ if (set_pesfilter(patfd, 0, DMX_PES_OTHER, dvr))
++ if (set_pesfilter(pmtfd, pmtpid, DMX_PES_OTHER, dvr))
+ result = TRUE;
+ } else {
+ result = TRUE;
+diff -r af23d23c278b util/szap/tzap.c
+--- a/util/szap/tzap.c Sat Jun 20 16:47:55 2009 +0200
++++ b/util/szap/tzap.c Tue Dec 21 12:13:28 2010 +0100
+@@ -35,6 +35,8 @@
+ #include <linux/dvb/frontend.h>
+ #include <linux/dvb/dmx.h>
+
++#include "util.h"
++
+ static char FRONTEND_DEV [80];
+ static char DEMUX_DEV [80];
+ static char DVR_DEV [80];
+@@ -269,7 +271,8 @@
+
+
+ int parse(const char *fname, const char *channel,
+- struct dvb_frontend_parameters *frontend, int *vpid, int *apid)
++ struct dvb_frontend_parameters *frontend, int *vpid, int *apid,
++ int *sid)
+ {
+ int fd;
+ int err;
+@@ -343,7 +346,11 @@
+
+ if ((err = try_parse_int(fd, apid, "Audio PID")))
+ return -13;
+-
++
++ if ((err = try_parse_int(fd, sid, "Service ID")))
++ return -14;
++
++
+ close(fd);
+
+ return 0;
+@@ -351,31 +358,6 @@
+
+
+ static
+-int set_pesfilter (int fd, int pid, dmx_pes_type_t type, int dvr)
+-{
+- struct dmx_pes_filter_params pesfilter;
+-
+- if (pid <= 0 || pid >= 0x1fff)
+- return 0;
+-
+- pesfilter.pid = pid;
+- pesfilter.input = DMX_IN_FRONTEND;
+- pesfilter.output = dvr ? DMX_OUT_TS_TAP : DMX_OUT_DECODER;
+- pesfilter.pes_type = type;
+- pesfilter.flags = DMX_IMMEDIATE_START;
+-
+- if (ioctl(fd, DMX_SET_PES_FILTER, &pesfilter) < 0) {
+- PERROR ("ioctl(DMX_SET_PES_FILTER) for %s PID failed",
+- type == DMX_PES_AUDIO ? "Audio" :
+- type == DMX_PES_VIDEO ? "Video" : "??");
+- return -1;
+- }
+-
+- return 0;
+-}
+-
+-
+-static
+ int setup_frontend (int fe_fd, struct dvb_frontend_parameters *frontend)
+ {
+ struct dvb_frontend_info fe_info;
+@@ -503,6 +485,7 @@
+ " -c file : read channels list from 'file'\n"
+ " -x : exit after tuning\n"
+ " -r : set up /dev/dvb/adapterX/dvr0 for TS recording\n"
++ " -p : add pat and pmt to TS recording (implies -r)\n"
+ " -s : only print summary\n"
+ " -S : run silently (no output)\n"
+ " -H : human readable output\n"
+@@ -519,15 +502,16 @@
+ char *confname = NULL;
+ char *channel = NULL;
+ int adapter = 0, frontend = 0, demux = 0, dvr = 0;
+- int vpid, apid;
++ int vpid, apid, sid, pmtpid = 0;
++ int pat_fd, pmt_fd;
+ int frontend_fd, audio_fd = 0, video_fd = 0, dvr_fd, file_fd;
+ int opt;
+ int record = 0;
+ int frontend_only = 0;
+ char *filename = NULL;
+- int human_readable = 0;
++ int human_readable = 0, rec_psi = 0;
+
+- while ((opt = getopt(argc, argv, "H?hrxRsFSn:a:f:d:c:t:o:")) != -1) {
++ while ((opt = getopt(argc, argv, "H?hrpxRsFSn:a:f:d:c:t:o:")) != -1) {
+ switch (opt) {
+ case 'a':
+ adapter = strtoul(optarg, NULL, 0);
+@@ -548,6 +532,9 @@
+ case 'r':
+ dvr = 1;
+ break;
++ case 'p':
++ rec_psi = 1;
++ break;
+ case 'x':
+ exit_after_tuning = 1;
+ break;
+@@ -610,7 +597,7 @@
+
+ memset(&frontend_param, 0, sizeof(struct dvb_frontend_parameters));
+
+- if (parse (confname, channel, &frontend_param, &vpid, &apid))
++ if (parse (confname, channel, &frontend_param, &vpid, &apid, &sid))
+ return -1;
+
+ if ((frontend_fd = open(FRONTEND_DEV, O_RDWR)) < 0) {
+@@ -624,6 +611,28 @@
+ if (frontend_only)
+ goto just_the_frontend_dude;
+
++ if (rec_psi) {
++ pmtpid = get_pmt_pid(DEMUX_DEV, sid);
++ if (pmtpid <= 0) {
++ fprintf(stderr,"couldn't find pmt-pid for sid %04x\n",sid);
++ return -1;
++ }
++
++ if ((pat_fd = open(DEMUX_DEV, O_RDWR)) < 0) {
++ perror("opening pat demux failed");
++ return -1;
++ }
++ if (set_pesfilter(pat_fd, 0, DMX_PES_OTHER, dvr) < 0)
++ return -1;
++
++ if ((pmt_fd = open(DEMUX_DEV, O_RDWR)) < 0) {
++ perror("opening pmt demux failed");
++ return -1;
++ }
++ if (set_pesfilter(pmt_fd, pmtpid, DMX_PES_OTHER, dvr) < 0)
++ return -1;
++ }
++
+ if ((video_fd = open(DEMUX_DEV, O_RDWR)) < 0) {
+ PERROR("failed opening '%s'", DEMUX_DEV);
+ return -1;
+@@ -689,6 +698,8 @@
+ check_frontend (frontend_fd, human_readable);
+ }
+
++ close (pat_fd);
++ close (pmt_fd);
+ close (audio_fd);
+ close (video_fd);
+ close (frontend_fd);
+diff -r af23d23c278b util/szap/util.c
+--- /dev/null Thu Jan 01 00:00:00 1970 +0000
++++ b/util/szap/util.c Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,126 @@
++/*
++ * util functions for various ?zap implementations
++ *
++ * Copyright (C) 2001 Johannes Stezenbach (js@convergence.de)
++ * for convergence integrated media
++ *
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 2 of the License, or
++ * (at your option) any later version.
++ *
++ * This program is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++ * GNU General Public License for more details.
++ *
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
++ */
++
++#include <string.h>
++#include <unistd.h>
++#include <stdio.h>
++#include <errno.h>
++
++#include <sys/ioctl.h>
++#include <sys/types.h>
++#include <sys/stat.h>
++#include <fcntl.h>
++
++#include <linux/dvb/frontend.h>
++#include <linux/dvb/dmx.h>
++
++
++int set_pesfilter(int dmxfd, int pid, int pes_type, int dvr)
++{
++ struct dmx_pes_filter_params pesfilter;
++
++ /* ignore this pid to allow radio services */
++ if (pid < 0 ||
++ pid >= 0x1fff ||
++ (pid == 0 && pes_type != DMX_PES_OTHER))
++ return 0;
++
++ if (dvr) {
++ int buffersize = 64 * 1024;
++ if (ioctl(dmxfd, DMX_SET_BUFFER_SIZE, buffersize) == -1)
++ perror("DMX_SET_BUFFER_SIZE failed");
++ }
++
++ pesfilter.pid = pid;
++ pesfilter.input = DMX_IN_FRONTEND;
++ pesfilter.output = dvr ? DMX_OUT_TS_TAP : DMX_OUT_DECODER;
++ pesfilter.pes_type = pes_type;
++ pesfilter.flags = DMX_IMMEDIATE_START;
++
++ if (ioctl(dmxfd, DMX_SET_PES_FILTER, &pesfilter) == -1) {
++ fprintf(stderr, "DMX_SET_PES_FILTER failed "
++ "(PID = 0x%04x): %d %m\n", pid, errno);
++ return -1;
++ }
++
++ return 0;
++}
++
++
++int get_pmt_pid(char *dmxdev, int sid)
++{
++ int patfd, count;
++ int pmt_pid = 0;
++ int patread = 0;
++ int section_length;
++ unsigned char buft[4096];
++ unsigned char *buf = buft;
++ struct dmx_sct_filter_params f;
++
++ memset(&f, 0, sizeof(f));
++ f.pid = 0;
++ f.filter.filter[0] = 0x00;
++ f.filter.mask[0] = 0xff;
++ f.timeout = 0;
++ f.flags = DMX_IMMEDIATE_START | DMX_CHECK_CRC;
++
++ if ((patfd = open(dmxdev, O_RDWR)) < 0) {
++ perror("openening pat demux failed");
++ return -1;
++ }
++
++ if (ioctl(patfd, DMX_SET_FILTER, &f) == -1) {
++ perror("ioctl DMX_SET_FILTER failed");
++ close(patfd);
++ return -1;
++ }
++
++ while (!patread){
++ if (((count = read(patfd, buf, sizeof(buft))) < 0) && errno == EOVERFLOW)
++ count = read(patfd, buf, sizeof(buft));
++ if (count < 0) {
++ perror("read_sections: read error");
++ close(patfd);
++ return -1;
++ }
++
++ section_length = ((buf[1] & 0x0f) << 8) | buf[2];
++ if (count != section_length + 3)
++ continue;
++
++ buf += 8;
++ section_length -= 8;
++
++ patread = 1; /* assumes one section contains the whole pat */
++ while (section_length > 0) {
++ int service_id = (buf[0] << 8) | buf[1];
++ if (service_id == sid) {
++ pmt_pid = ((buf[2] & 0x1f) << 8) | buf[3];
++ section_length = 0;
++ }
++ buf += 4;
++ section_length -= 4;
++ }
++ }
++
++ close(patfd);
++ return pmt_pid;
++}
+diff -r af23d23c278b util/szap/util.h
+--- /dev/null Thu Jan 01 00:00:00 1970 +0000
++++ b/util/szap/util.h Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,24 @@
++/*
++ * util functions for various ?zap implementations
++ *
++ * Copyright (C) 2001 Johannes Stezenbach (js@convergence.de)
++ * for convergence integrated media
++ *
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 2 of the License, or
++ * (at your option) any later version.
++ *
++ * This program is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++ * GNU General Public License for more details.
++ *
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
++ */
++
++int set_pesfilter(int dmxfd, int pid, int pes_type, int dvr);
++
++int get_pmt_pid(char *dmxdev, int sid);
diff --git a/recipes/dvbtools/dvb-apps-1.1.1/update-to-trunk.diff b/recipes/dvbtools/dvb-apps-1.1.1/update-to-trunk.diff
index 6d4a66a501..55c34195bb 100644
--- a/recipes/dvbtools/dvb-apps-1.1.1/update-to-trunk.diff
+++ b/recipes/dvbtools/dvb-apps-1.1.1/update-to-trunk.diff
@@ -1,4 +1,15 @@
- COPYING | 339
+update to:
+
+changeset 1281:af23d23c278b
+
+update scan files for several satellites
+submitted by kosava gmail.com
+author Christoph Pfister <pfister@linuxtv.org>
+date Sat Jun 20 16:47:55 2009 +0200 (18 months ago)
+parents 291041ebe58f
+children 6d6dad45d8ef
+
+COPYING | 339
COPYING.LGPL | 502 +
INSTALL | 26
Make.rules | 104
diff --git a/recipes/dvbtools/dvb-apps_1.1.1.bb b/recipes/dvbtools/dvb-apps_1.1.1.bb
index fc7b8dab22..8f473ca616 100644
--- a/recipes/dvbtools/dvb-apps_1.1.1.bb
+++ b/recipes/dvbtools/dvb-apps_1.1.1.bb
@@ -2,9 +2,10 @@ HOMEPAGE = "http://www.linuxtv.org"
LICENSE = "GPL"
SRC_URI = "http://linuxtv.org/downloads/linuxtv-dvb-apps-${PV}.tar.bz2 \
- file://update-to-trunk.diff"
+ file://update-to-trunk.diff \
+ file://update-to-tip.diff"
-PR = "r1"
+PR = "r2"
S = "${WORKDIR}/linuxtv-dvb-apps-${PV}"