Mazovia (kod)

Polskie znaki na klawiaturze IPACO/Mazovia

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

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 IPACOMazovię 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

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 i niemiecki.

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 lub ewentualnie PLN (PLZ), jeżeli użyty konwerter sam nie dokonuje tej konwersji.

Braki

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)

 x0x1x2x3x4x5x6x7x8x9xAxBxCxDxExF
0xZnaki kontrolne
1x
2xSP!"#$%&'()*+,-./
3x0123456789:;<=>?
4x@ABCDEFGHIJKLMNO
5xPQRSTUVWXYZ[\]^_
6x`abcdefghijklmno
7xpqrstuvwxyz{|}~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)

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.ZnakUnikodNazwa znaku
0x80Ç0x00C7LATIN CAPITAL LETTER C WITH CEDILLA
0x81ü0x00FCLATIN SMALL LETTER U WITH DIAERESIS
0x82é0x00E9LATIN SMALL LETTER E WITH ACUTE
0x83â0x00E2LATIN SMALL LETTER A WITH CIRCUMFLEX
0x84ä0x00E4LATIN SMALL LETTER A WITH DIAERESIS
0x85à0x00E0LATIN SMALL LETTER A WITH GRAVE
0x86ą0x0105LATIN SMALL LETTER A WITH OGONEK
0x87ç0x00E7LATIN SMALL LETTER C WITH CEDILLA
0x88ê0x00EALATIN SMALL LETTER E WITH CIRCUMFLEX
0x89ë0x00EBLATIN SMALL LETTER E WITH DIAERESIS
0x8Aè0x00E8LATIN SMALL LETTER E WITH GRAVE
0x8Bï0x00EFLATIN SMALL LETTER I WITH DIAERESIS
0x8Cî0x00EELATIN SMALL LETTER I WITH CIRCUMFLEX
0x8Dć0x0107LATIN SMALL LETTER C WITH ACUTE
0x8EÄ0x00C4LATIN CAPITAL LETTER A WITH DIAERESIS
0x8FĄ0x0104LATIN CAPITAL LETTER A WITH OGONEK
0x90Ę0x0118LATIN CAPITAL LETTER E WITH OGONEK
0x91ę0x0119LATIN SMALL LETTER E WITH OGONEK
0x92ł0x0142LATIN SMALL LETTER L WITH STROKE
0x93ô0x00F4LATIN SMALL LETTER O WITH CIRCUMFLEX
0x94ö0x00F6LATIN SMALL LETTER O WITH DIAERESIS
0x95Ć0x0106LATIN CAPITAL LETTER C WITH ACUTE
0x96û0x00FBLATIN SMALL LETTER U WITH CIRCUMFLEX
0x97ù0x00F9LATIN SMALL LETTER U WITH GRAVE
0x98Ś0x015ALATIN CAPITAL LETTER S WITH ACUTE
0x99Ö0x00D6LATIN CAPITAL LETTER O WITH DIAERESIS
0x9AÜ0x00DCLATIN CAPITAL LETTER U WITH DIAERESIS
0x9B¢0x00A2CENT SIGN
0x9CŁ0x0141LATIN CAPITAL LETTER L WITH STROKE
0x9D¥0x00A5YEN SIGN
0x9Eś0x015BLATIN SMALL LETTER S WITH ACUTE
0x9Fƒ0x0192LATIN SMALL LETTER F WITH HOOK
0xA0Ź0x0179LATIN CAPITAL LETTER Z WITH ACUTE
0xA1Ż0x017BLATIN CAPITAL LETTER Z WITH DOT ABOVE
0xA2ó0x00F3LATIN SMALL LETTER O WITH ACUTE
0xA3Ó0x00D3LATIN CAPITAL LETTER O WITH ACUTE
0xA4ń0x0144LATIN SMALL LETTER N WITH ACUTE
0xA5Ń0x0143LATIN CAPITAL LETTER N WITH ACUTE
0xA6ź0x017ALATIN SMALL LETTER Z WITH ACUTE
0xA7ż0x017CLATIN SMALL LETTER Z WITH DOT ABOVE
0xA8¿0x00BFINVERTED QUESTION MARK
0xA90x2310REVERSED NOT SIGN
0xAA¬0x00ACNOT SIGN
0xAB½0x00BDVULGAR FRACTION ONE HALF
0xAC¼0x00BCVULGAR FRACTION ONE QUARTER
0xAD¡0x00A1INVERTED EXCLAMATION MARK
0xAE«0x00ABLEFT-POINTING DOUBLE ANGLE QUOTATION MARK
0xAF»0x00BBRIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
0xB00x2591LIGHT SHADE
0xB10x2592MEDIUM SHADE
0xB20x2593DARK SHADE
0xB30x2502BOX DRAWINGS LIGHT VERTICAL
0xB40x2524BOX DRAWINGS LIGHT VERTICAL AND LEFT
0xB50x2561BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
0xB60x2562BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE
0xB70x2556BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE
0xB80x2555BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE
0xB90x2563BOX DRAWINGS DOUBLE VERTICAL AND LEFT
0xBA0x2551BOX DRAWINGS DOUBLE VERTICAL
0xBB0x2557BOX DRAWINGS DOUBLE DOWN AND LEFT
0xBC0x255DBOX DRAWINGS DOUBLE UP AND LEFT
0xBD0x255CBOX DRAWINGS UP DOUBLE AND LEFT SINGLE
0xBE0x255BBOX DRAWINGS UP SINGLE AND LEFT DOUBLE
0xBF0x2510BOX DRAWINGS LIGHT DOWN AND LEFT
0xC00x2514BOX DRAWINGS LIGHT UP AND RIGHT
0xC10x2534BOX DRAWINGS LIGHT UP AND HORIZONTAL
0xC20x252CBOX DRAWINGS LIGHT DOWN AND HORIZONTAL
0xC30x251CBOX DRAWINGS LIGHT VERTICAL AND RIGHT
0xC40x2500BOX DRAWINGS LIGHT HORIZONTAL
0xC50x253CBOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
0xC60x255EBOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
0xC70x255FBOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
0xC80x255ABOX DRAWINGS DOUBLE UP AND RIGHT
0xC90x2554BOX DRAWINGS DOUBLE DOWN AND RIGHT
0xCA0x2569BOX DRAWINGS DOUBLE UP AND HORIZONTAL
0xCB0x2566BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
0xCC0x2560BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
0xCD0x2550BOX DRAWINGS DOUBLE HORIZONTAL
0xCE0x256CBOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
0xCF0x2567BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
0xD00x2568BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
0xD10x2564BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE
0xD20x2565BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE
0xD30x2559BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
0xD40x2558BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
0xD50x2552BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
0xD60x2553BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE
0xD70x256BBOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE
0xD80x256ABOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
0xD90x2518BOX DRAWINGS LIGHT UP AND LEFT
0xDA0x250CBOX DRAWINGS LIGHT DOWN AND RIGHT
0xDB0x2588FULL BLOCK
0xDC0x2584LOWER HALF BLOCK
0xDD0x258CLEFT HALF BLOCK
0xDE0x2590RIGHT HALF BLOCK
0xDF0x2580UPPER HALF BLOCK
0xE0α0x03B1GREEK SMALL LETTER ALPHA
0xE1ß0x00DFLATIN SMALL LETTER SHARP S
0xE2Γ0x0393GREEK CAPITAL LETTER GAMMA
0xE3π0x03C0GREEK SMALL LETTER PI
0xE4Σ0x03A3GREEK CAPITAL LETTER SIGMA
0xE5σ0x03C3GREEK SMALL LETTER SIGMA
0xE6µ0x00B5MICRO SIGN
0xE7τ0x03C4GREEK SMALL LETTER TAU
0xE8Φ0x03A6GREEK CAPITAL LETTER PHI
0xE9Θ0x0398GREEK CAPITAL LETTER THETA
0xEAΩ0x03A9GREEK CAPITAL LETTER OMEGA
0xEBδ0x03B4GREEK SMALL LETTER DELTA
0xEC0x221EINFINITY
0xEDφ0x03C6GREEK SMALL LETTER PHI
0xEEε0x03B5GREEK SMALL LETTER EPSILON
0xEF0x2229INTERSECTION
0xF00x2261IDENTICAL TO
0xF1±0x00B1PLUS-MINUS SIGN
0xF20x2265GREATER-THAN OR EQUAL TO
0xF30x2264LESS-THAN OR EQUAL TO
0xF40x2320TOP HALF INTEGRAL
0xF50x2321BOTTOM HALF INTEGRAL
0xF6÷0x00F7DIVISION SIGN
0xF70x2248ALMOST EQUAL TO
0xF8°0x00B0DEGREE SIGN
0xF90x2219BULLET OPERATOR
0xFA·0x00B7MIDDLE DOT
0xFB0x221ASQUARE ROOT
0xFC0x207FSUPERSCRIPT LATIN SMALL LETTER N
0xFD²0x00B2SUPERSCRIPT TWO
0xFE0x25A0BLACK SQUARE
0xFFNBSP0x00A0NO-BREAK SPACE

Rozmieszczenie polskich znaków

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

  • 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:
    1. 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”.
    2. 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

  1. Janusz S. Bień: Wybrane standardy przetwarzania tekstów. 1993, s. 8. [dostęp 2016-12-11].
  2. Code Pages Supported by Visual FoxPro. [dostęp 2017-01-04].

Bibliografia

Media użyte na tej stronie

P3010080003 layout Mazovii.jpg
Autor: Janklimowicz, Licencja: CC BY-SA 3.0
Polish layout on IPACO Mazovia-coded keybord
P3010080004 kod Mazovii.jpg
Autor: Janklimowicz, Licencja: CC BY-SA 3.0
Mazovia-coded IPACO?NBP keybord