diff options
author | Koen Kooi <koen@openembedded.org> | 2010-12-21 12:18:53 +0100 |
---|---|---|
committer | Koen Kooi <koen@openembedded.org> | 2010-12-21 12:20:20 +0100 |
commit | 2ce320cafab63411b3eeb0be74c9190393e49fad (patch) | |
tree | 8b54e46ada9f1813a174c5dfd7ad68654e961a3e /recipes/dvbtools | |
parent | 7723400e2b7853fc786712adaa09037b9dc708aa (diff) | |
download | openembedded-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.diff | 37589 | ||||
-rw-r--r-- | recipes/dvbtools/dvb-apps-1.1.1/update-to-trunk.diff | 13 | ||||
-rw-r--r-- | recipes/dvbtools/dvb-apps_1.1.1.bb | 5 |
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 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   ++ 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 ++ // 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," "); ++ 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," "); ++ 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, ×tamp, ++ &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§ionID=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}" |