Mazovia (kod)
Mazovia – 8-bitowe kodowanie znaków przeznaczone do stosowania w systemach operacyjnych MS-DOS i kompatybilnych. Powstało na potrzeby projektowanego polskiego komputera klasy IBM PC o nazwie handlowej Mazovia. Z inicjatywy Andrzeja Gecowa otrzymało ono od 1.IX.1992 status Normy Zakładowej ZN-92 Przetwarzanie informacji. Zestaw znaków graficznych w jednobajtowym kodzie 8-bitowym – tzw. kod MAZOVIA w Spółce Akcyjnej „Mikrokomputery”[1]
Było pierwszym rozpowszechnionym kodowaniem używanym dla języka polskiego na komputery domowe. Po wejściu na rynek systemu operacyjnego MS-DOS w wersji 5.0, posiadającego natywną obsługę języków Europy Środkowej (w postaci strony kodowej CP852), popularność Mazovii zaczęła nieco spadać, choć dalej kodowanie to było stosunkowo szeroko używane, między innymi za sprawą archiwów i baz danych posiadanych przez użytkowników. Dopiero od czasu rozpowszechnienia się systemów operacyjnych Windows 3.x, a zwłaszcza Windows 95 i Windows NT 4.0, wykorzystujących kodowanie Windows-1250 i (w różnym stopniu) Unikodu, znaczenie Mazovii zaczęło bardzo szybko maleć (choć wciąż można spotkać aplikacje wykorzystujące to kodowanie).
Spotyka się oznaczenie Mazovii symbolem strony kodowej CP620[2].
Historia
[edytuj | edytuj kod]Mazovia została opracowana w połowie lat osiemdziesiątych XX wieku i użyta po raz pierwszy w wersji systemu operacyjnego komputera Mazovia (klasy PC/XT), produkowanego w Polsce w niewielkich ilościach od 1986 roku. Sam komputer nie był sukcesem, ale kodowanie było popularne przez wiele lat po zaprzestaniu jego produkcji.
Kod Mazovii został zaprojektowany w 1984 roku przez jej głównego programistę, mgr. inż. Jana Klimowicza (ur. 1942) z Instytutu Maszyn Matematycznych (IMM) w trakcie definiowania przez niego założeń na jej peryferia: kartę graficzną o przełączanej podwójnej grafice, klawiaturę z układem maszynistki przełączaną na rosyjski i oryginalny IBM PC oraz drukarkę mozaikową z polskimi czcionkami. Wszystko to miało umożliwić polonizację PC-DOS, języka programowania Basic i podstawowych programów, prowadzoną bez dostępności do kodów źródłowych. W 1986 roku, kiedy okazało się, że produkcja komputera Mazovia 1016 w Polsce nie ruszy, wprowadził on do Narodowego Banku Polskiego (na długo przed jego podziałem na 11 samodzielnych banków) komputery IPACO – Mazovię zrealizowaną na tajwańskich podzespołach pod jego kierunkiem w firmie IPACO Zbigniewa Jakubasa i Krzysztofa Sochackiego. Formalnie dostawcą była powołana do produkcji Mazovii S-ka Mikrokomputery, która dołączała spolonizowane w IMM oprogramowanie. NBP przyjął unormowania Mazovii jako standard i korzystał ze standardowych pakietów tego oprogramowania, co dało początek szerokiemu rozpowszechnieniu kodu Mazovii w Polsce.
Projekt tablic kodowych Mazovii obejmował wszystkie kraje wschodnioeuropejskie, a dla Bałtów przewidywał wspólną tablicę kodową LILIVEST – Lithuania, Livonia, Estonia – zawierającą wszystkie znaki diakrytyczne używane w tych krajach. Tablica ta nigdy nie została przyjęta w Związku Radzieckim.
Microsoft nigdy nie uznał istnienia tego kodowania i systemy tej firmy (z nielicznymi wyjątkami) nigdy nie posiadały natywnej obsługi Mazovii.
Przez wiele lat na polskim rynku egzystowały firmy zajmujące się wprowadzaniem zmian w firmware kart graficznych i drukarek, dzięki czemu można było uzyskać polskie znaki w tym kodowaniu na ekranie i na wydrukach.
Mazovia obecnie jest natywnie obsługiwana przez FreeDOS, jako strona kodowa CP790 (standardowa) i CP991 (zmodyfikowana: na pozycji 0x9B zawiera symbol złotego „zł” zamiast symbolu centa „¢”, czyli tak jak w karcie graficznej oryginalnego komputera Mazovia 1016).
Zestaw znaków
[edytuj | edytuj kod]Kodowanie Mazovia zostało zaprojektowane z myślą o możliwej wymienności plików z użytkownikami oryginalnych IBM PC używających kodowania CP437, dlatego oparto się na tym kodowaniu i starano się w miarę możliwości tak umieścić polskie litery, by zastąpiły one litery ze znakami diakrytycznymi w jakiś sposób przypominające litery polskie, na przykład Ą w miejscu Å, Ę w miejscu É, Ł w miejscu £. Wszystkie istniejące w oryginale znaki semigrafiki i symbole matematyczne pozostawiono bez zmian.
Kodowanie to pokrywa język polski i, podobnie jak oryginał, język angielski, niemiecki i francuski.
Stosowany w CP991 symbol złotego nie istnieje w unikodzie ani żadnym innym kodowaniu, co sprawia trudności przy konwersji dokumentów używających tego kodowania i zawierających ten znak – należy pamiętać o uprzedniej manualnej konwersji znaku 0x9B (155 dziesiętnie) na zł lub ewentualnie PLN (PLZ), jeżeli użyty konwerter sam nie dokonuje tej konwersji.
Braki
[edytuj | edytuj kod]Kodowanie to nie zawiera znaków cudzysłowów stosowanych w typografii języka polskiego (ani w obu pozostałych językach).
Tablica kodów (wersja CP790)
[edytuj | edytuj kod]x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | |
0x | Znaki kontrolne | |||||||||||||||
1x | ||||||||||||||||
2x | SP | ! | " | # | $ | % | & | ' | ( | ) | * | + | , | - | . | / |
3x | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | : | ; | < | = | > | ? |
4x | @ | A | B | C | D | E | F | G | H | I | J | K | L | M | N | O |
5x | P | Q | R | S | T | U | V | W | X | Y | Z | [ | \ | ] | ^ | _ |
6x | ` | a | b | c | d | e | f | g | h | i | j | k | l | m | n | o |
7x | p | q | r | s | t | u | v | w | x | y | z | { | | | } | ~ | ZK |
8x | Ç | ü | é | â | ä | à | ą | ç | ê | ë | è | ï | î | ć | Ä | Ą |
9x | Ę | ę | ł | ô | ö | Ć | û | ù | Ś | Ö | Ü | ¢ | Ł | ¥ | ś | ƒ |
Ax | Ź | Ż | ó | Ó | ń | Ń | ź | ż | ¿ | ⌐ | ¬ | ½ | ¼ | ¡ | « | » |
Bx | ░ | ▒ | ▓ | │ | ┤ | ╡ | ╢ | ╖ | ╕ | ╣ | ║ | ╗ | ╝ | ╜ | ╛ | ┐ |
Cx | └ | ┴ | ┬ | ├ | ─ | ┼ | ╞ | ╟ | ╚ | ╔ | ╩ | ╦ | ╠ | ═ | ╬ | ╧ |
Dx | ╨ | ╤ | ╥ | ╙ | ╘ | ╒ | ╓ | ╫ | ╪ | ┘ | ┌ | █ | ▄ | ▌ | ▐ | ▀ |
Ex | α | ß | Γ | π | Σ | σ | µ | τ | Φ | Θ | Ω | δ | ∞ | φ | ε | ∩ |
Fx | ≡ | ± | ≥ | ≤ | ⌠ | ⌡ | ÷ | ≈ | ° | ∙ | · | √ | ⁿ | ² | ■ | NBSP |
ZK oznacza znak kontrolny
Zmiany w porównaniu z CP437 zaznaczone są przy użyciu żółtego tła
Mapowanie na Unikodzie (wersja CP790)
[edytuj | edytuj kod]Poniższa tabela przedstawia kody Unikodu znaków zawartych w kodowaniu Mazovia. Tabela zawiera wyłącznie znaki z górnego zakresu (dolny zakres, czyli pozycje 0x00 ÷ 0x7F jest identyczny z ASCII). Wszystkie kody podane jako szesnastkowe.
Maz. | Znak | Unikod | Nazwa znaku |
---|---|---|---|
0x80 | Ç | 0x00C7 | LATIN CAPITAL LETTER C WITH CEDILLA |
0x81 | ü | 0x00FC | LATIN SMALL LETTER U WITH DIAERESIS |
0x82 | é | 0x00E9 | LATIN SMALL LETTER E WITH ACUTE |
0x83 | â | 0x00E2 | LATIN SMALL LETTER A WITH CIRCUMFLEX |
0x84 | ä | 0x00E4 | LATIN SMALL LETTER A WITH DIAERESIS |
0x85 | à | 0x00E0 | LATIN SMALL LETTER A WITH GRAVE |
0x86 | ą | 0x0105 | LATIN SMALL LETTER A WITH OGONEK |
0x87 | ç | 0x00E7 | LATIN SMALL LETTER C WITH CEDILLA |
0x88 | ê | 0x00EA | LATIN SMALL LETTER E WITH CIRCUMFLEX |
0x89 | ë | 0x00EB | LATIN SMALL LETTER E WITH DIAERESIS |
0x8A | è | 0x00E8 | LATIN SMALL LETTER E WITH GRAVE |
0x8B | ï | 0x00EF | LATIN SMALL LETTER I WITH DIAERESIS |
0x8C | î | 0x00EE | LATIN SMALL LETTER I WITH CIRCUMFLEX |
0x8D | ć | 0x0107 | LATIN SMALL LETTER C WITH ACUTE |
0x8E | Ä | 0x00C4 | LATIN CAPITAL LETTER A WITH DIAERESIS |
0x8F | Ą | 0x0104 | LATIN CAPITAL LETTER A WITH OGONEK |
0x90 | Ę | 0x0118 | LATIN CAPITAL LETTER E WITH OGONEK |
0x91 | ę | 0x0119 | LATIN SMALL LETTER E WITH OGONEK |
0x92 | ł | 0x0142 | LATIN SMALL LETTER L WITH STROKE |
0x93 | ô | 0x00F4 | LATIN SMALL LETTER O WITH CIRCUMFLEX |
0x94 | ö | 0x00F6 | LATIN SMALL LETTER O WITH DIAERESIS |
0x95 | Ć | 0x0106 | LATIN CAPITAL LETTER C WITH ACUTE |
0x96 | û | 0x00FB | LATIN SMALL LETTER U WITH CIRCUMFLEX |
0x97 | ù | 0x00F9 | LATIN SMALL LETTER U WITH GRAVE |
0x98 | Ś | 0x015A | LATIN CAPITAL LETTER S WITH ACUTE |
0x99 | Ö | 0x00D6 | LATIN CAPITAL LETTER O WITH DIAERESIS |
0x9A | Ü | 0x00DC | LATIN CAPITAL LETTER U WITH DIAERESIS |
0x9B | ¢ | 0x00A2 | CENT SIGN |
0x9C | Ł | 0x0141 | LATIN CAPITAL LETTER L WITH STROKE |
0x9D | ¥ | 0x00A5 | YEN SIGN |
0x9E | ś | 0x015B | LATIN SMALL LETTER S WITH ACUTE |
0x9F | ƒ | 0x0192 | LATIN SMALL LETTER F WITH HOOK |
0xA0 | Ź | 0x0179 | LATIN CAPITAL LETTER Z WITH ACUTE |
0xA1 | Ż | 0x017B | LATIN CAPITAL LETTER Z WITH DOT ABOVE |
0xA2 | ó | 0x00F3 | LATIN SMALL LETTER O WITH ACUTE |
0xA3 | Ó | 0x00D3 | LATIN CAPITAL LETTER O WITH ACUTE |
0xA4 | ń | 0x0144 | LATIN SMALL LETTER N WITH ACUTE |
0xA5 | Ń | 0x0143 | LATIN CAPITAL LETTER N WITH ACUTE |
0xA6 | ź | 0x017A | LATIN SMALL LETTER Z WITH ACUTE |
0xA7 | ż | 0x017C | LATIN SMALL LETTER Z WITH DOT ABOVE |
0xA8 | ¿ | 0x00BF | INVERTED QUESTION MARK |
0xA9 | ⌐ | 0x2310 | REVERSED NOT SIGN |
0xAA | ¬ | 0x00AC | NOT SIGN |
0xAB | ½ | 0x00BD | VULGAR FRACTION ONE HALF |
0xAC | ¼ | 0x00BC | VULGAR FRACTION ONE QUARTER |
0xAD | ¡ | 0x00A1 | INVERTED EXCLAMATION MARK |
0xAE | « | 0x00AB | LEFT-POINTING DOUBLE ANGLE QUOTATION MARK |
0xAF | » | 0x00BB | RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK |
0xB0 | ░ | 0x2591 | LIGHT SHADE |
0xB1 | ▒ | 0x2592 | MEDIUM SHADE |
0xB2 | ▓ | 0x2593 | DARK SHADE |
0xB3 | │ | 0x2502 | BOX DRAWINGS LIGHT VERTICAL |
0xB4 | ┤ | 0x2524 | BOX DRAWINGS LIGHT VERTICAL AND LEFT |
0xB5 | ╡ | 0x2561 | BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE |
0xB6 | ╢ | 0x2562 | BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE |
0xB7 | ╖ | 0x2556 | BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE |
0xB8 | ╕ | 0x2555 | BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE |
0xB9 | ╣ | 0x2563 | BOX DRAWINGS DOUBLE VERTICAL AND LEFT |
0xBA | ║ | 0x2551 | BOX DRAWINGS DOUBLE VERTICAL |
0xBB | ╗ | 0x2557 | BOX DRAWINGS DOUBLE DOWN AND LEFT |
0xBC | ╝ | 0x255D | BOX DRAWINGS DOUBLE UP AND LEFT |
0xBD | ╜ | 0x255C | BOX DRAWINGS UP DOUBLE AND LEFT SINGLE |
0xBE | ╛ | 0x255B | BOX DRAWINGS UP SINGLE AND LEFT DOUBLE |
0xBF | ┐ | 0x2510 | BOX DRAWINGS LIGHT DOWN AND LEFT |
0xC0 | └ | 0x2514 | BOX DRAWINGS LIGHT UP AND RIGHT |
0xC1 | ┴ | 0x2534 | BOX DRAWINGS LIGHT UP AND HORIZONTAL |
0xC2 | ┬ | 0x252C | BOX DRAWINGS LIGHT DOWN AND HORIZONTAL |
0xC3 | ├ | 0x251C | BOX DRAWINGS LIGHT VERTICAL AND RIGHT |
0xC4 | ─ | 0x2500 | BOX DRAWINGS LIGHT HORIZONTAL |
0xC5 | ┼ | 0x253C | BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL |
0xC6 | ╞ | 0x255E | BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE |
0xC7 | ╟ | 0x255F | BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE |
0xC8 | ╚ | 0x255A | BOX DRAWINGS DOUBLE UP AND RIGHT |
0xC9 | ╔ | 0x2554 | BOX DRAWINGS DOUBLE DOWN AND RIGHT |
0xCA | ╩ | 0x2569 | BOX DRAWINGS DOUBLE UP AND HORIZONTAL |
0xCB | ╦ | 0x2566 | BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL |
0xCC | ╠ | 0x2560 | BOX DRAWINGS DOUBLE VERTICAL AND RIGHT |
0xCD | ═ | 0x2550 | BOX DRAWINGS DOUBLE HORIZONTAL |
0xCE | ╬ | 0x256C | BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL |
0xCF | ╧ | 0x2567 | BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE |
0xD0 | ╨ | 0x2568 | BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE |
0xD1 | ╤ | 0x2564 | BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE |
0xD2 | ╥ | 0x2565 | BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE |
0xD3 | ╙ | 0x2559 | BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE |
0xD4 | ╘ | 0x2558 | BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE |
0xD5 | ╒ | 0x2552 | BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE |
0xD6 | ╓ | 0x2553 | BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE |
0xD7 | ╫ | 0x256B | BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE |
0xD8 | ╪ | 0x256A | BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE |
0xD9 | ┘ | 0x2518 | BOX DRAWINGS LIGHT UP AND LEFT |
0xDA | ┌ | 0x250C | BOX DRAWINGS LIGHT DOWN AND RIGHT |
0xDB | █ | 0x2588 | FULL BLOCK |
0xDC | ▄ | 0x2584 | LOWER HALF BLOCK |
0xDD | ▌ | 0x258C | LEFT HALF BLOCK |
0xDE | ▐ | 0x2590 | RIGHT HALF BLOCK |
0xDF | ▀ | 0x2580 | UPPER HALF BLOCK |
0xE0 | α | 0x03B1 | GREEK SMALL LETTER ALPHA |
0xE1 | ß | 0x00DF | LATIN SMALL LETTER SHARP S |
0xE2 | Γ | 0x0393 | GREEK CAPITAL LETTER GAMMA |
0xE3 | π | 0x03C0 | GREEK SMALL LETTER PI |
0xE4 | Σ | 0x03A3 | GREEK CAPITAL LETTER SIGMA |
0xE5 | σ | 0x03C3 | GREEK SMALL LETTER SIGMA |
0xE6 | µ | 0x00B5 | MICRO SIGN |
0xE7 | τ | 0x03C4 | GREEK SMALL LETTER TAU |
0xE8 | Φ | 0x03A6 | GREEK CAPITAL LETTER PHI |
0xE9 | Θ | 0x0398 | GREEK CAPITAL LETTER THETA |
0xEA | Ω | 0x03A9 | GREEK CAPITAL LETTER OMEGA |
0xEB | δ | 0x03B4 | GREEK SMALL LETTER DELTA |
0xEC | ∞ | 0x221E | INFINITY |
0xED | φ | 0x03C6 | GREEK SMALL LETTER PHI |
0xEE | ε | 0x03B5 | GREEK SMALL LETTER EPSILON |
0xEF | ∩ | 0x2229 | INTERSECTION |
0xF0 | ≡ | 0x2261 | IDENTICAL TO |
0xF1 | ± | 0x00B1 | PLUS-MINUS SIGN |
0xF2 | ≥ | 0x2265 | GREATER-THAN OR EQUAL TO |
0xF3 | ≤ | 0x2264 | LESS-THAN OR EQUAL TO |
0xF4 | ⌠ | 0x2320 | TOP HALF INTEGRAL |
0xF5 | ⌡ | 0x2321 | BOTTOM HALF INTEGRAL |
0xF6 | ÷ | 0x00F7 | DIVISION SIGN |
0xF7 | ≈ | 0x2248 | ALMOST EQUAL TO |
0xF8 | ° | 0x00B0 | DEGREE SIGN |
0xF9 | ∙ | 0x2219 | BULLET OPERATOR |
0xFA | · | 0x00B7 | MIDDLE DOT |
0xFB | √ | 0x221A | SQUARE ROOT |
0xFC | ⁿ | 0x207F | SUPERSCRIPT LATIN SMALL LETTER N |
0xFD | ² | 0x00B2 | SUPERSCRIPT TWO |
0xFE | ■ | 0x25A0 | BLACK SQUARE |
0xFF | NBSP | 0x00A0 | NO-BREAK SPACE |
Rozmieszczenie polskich znaków
[edytuj | edytuj kod]Małe litery | |||||
---|---|---|---|---|---|
ą | 0x86 | ł | 0x92 | ś | 0x9E |
ć | 0x8D | ń | 0xA4 | ź | 0xA6 |
ę | 0x91 | ó | 0xA2 | ż | 0xA7 |
Wielkie litery | |||||
Ą | 0x8F | Ł | 0x9C | Ś | 0x98 |
Ć | 0x95 | Ń | 0xA5 | Ź | 0xA0 |
Ę | 0x90 | Ó | 0xA3 | Ż | 0xA1 |
Odmiany kodowania
[edytuj | edytuj kod]- Mazovia 157 – litera „ś” została przeniesiona z pozycji 0x9E na 0x9D (157 w układzie dziesiętnym – stąd nazwa)
- Fido Mazovia – litera „ć” została przeniesiona z pozycji 0x8D na pozycję 0x87, zajmowaną w CP437 przez literę „ç”. Cele były dwa:
- poprawienie zrozumiałości tekstu kodowanego w Mazovii u osób czytających ten tekst przy użyciu kodowania CP437. W CP437 na pozycji 0x8D występuje litera „ì”, która nie dość, że nie kojarzy się z „ć”, to jeszcze jest niezwykle podobna do łacińskiego „i”.
- ułatwienie albo wręcz umożliwienie korzystania z polskich znaków diakrytycznych w sieci Fidonet (stąd nazwa kodowania) oraz w połączeniach wdzwanianych do BBS. Większość ówczesnych programów obsługujących modemy i połączenia z BBS-ami pod kodem 0x9E miała polecenie rozłączenia połączenia, co zwykle kończyło sesję.
- FreeDOS udostępnia stronę kodową 991 – Mazovia ze znakiem złotego. Znak ten występuje na pozycji 0x9B (w miejsce znaku „¢”). Znak złotego formalnie nie istnieje, ani nie ma przyporządkowanego kodu Unikodu, więc używanie tego znaku może powodować trudności podczas konwersji dokumentów.
Przypisy
[edytuj | edytuj kod]- ↑ Janusz S. Bień: Wybrane standardy przetwarzania tekstów. 1993, s. 8. [dostęp 2016-12-11].
- ↑ Code Pages Supported by Visual FoxPro. [dostęp 2017-01-04].
Bibliografia
[edytuj | edytuj kod]- 1. Polski IBM. Dziennik miłośnika polskich komputerów
- 2. Dr inż. Wojciech Nowakowski: 50 lat polskich komputerów – Historia romantyczna, s. 9, Mazovia – Łabędzi śpiew. IMM Warszawa 2008. imm.org.pl. [zarchiwizowane z tego adresu (2012-08-10)].
- 3. Mazovia 1016, ITpedia
- 4. pb.pl Puls Biznesu: Złotodajna Intuicja; Komputery w wiklinie. ludzie.pb.pl. [zarchiwizowane z tego adresu (2015-04-02)].