diff --git a/.github/workflows/ci-build.yml b/.github/workflows/ci-build.yml index 8e6a8ce..afa7ae1 100644 --- a/.github/workflows/ci-build.yml +++ b/.github/workflows/ci-build.yml @@ -25,7 +25,12 @@ jobs: sudo add-apt-repository ppa:tkchia/build-ia16 sudo apt update sudo apt install gcc-ia16-elf libi86-ia16-elf nasm upx + sudo apt install python3-iso3166 python3-phonenumbers - name: Build run: | make clean all + + - name: Validate + run: | + ./ci_validate.py diff --git a/ci_validate.py b/ci_validate.py new file mode 100755 index 0000000..112ac40 --- /dev/null +++ b/ci_validate.py @@ -0,0 +1,95 @@ +#!/usr/bin/python + +import re +import iso3166 +import phonenumbers +import sys + + + +from pathlib import Path + +COUNTRY_ASM = Path('country.asm') + + +def is_alpha2(code): + if code.upper() == 'XX': # Middle East + return True + return code.upper() in iso3166._by_alpha2 + +def is_country(code, pnum): + if code.upper() == 'CA' and pnum =='2': # French speaking Canada + return True + if code.upper() == 'LA' and pnum =='3': # Latin America + return True + if code.upper() == 'XX' and pnum =='785': # Middle East + return True + return code.upper() in phonenumbers.region_codes_for_country_code(int(pnum, 10)) + + +def check_master(lines): + errors = 0 + num_found = 0 + num_reported = 0 + + # ent dw 171; + ent_re = r"^ent\s+dw\s+(\d+)" + + # __us_437 dw 12, 1,437,0,0 + mas_re = r"^__([a-z]{2})_([0-9]+)\s+dw\s12,\s*(\d+),\s*(\d+)" + + # Countries 4x000 - 4x999 (Multilingual) + # __nl_BE_850 dw 12, 40032,850,0,0 + mlt_re = r"^__([a-z]{2})_([A-Z]{2})_([0-9]+)\s+dw\s12,\s*(\d+),\s*(\d+)" + + for i, line in enumerate(lines): + ent = re.match(ent_re, line) + if ent: + num_reported = int(ent.group(1)) + + mas = re.match(mas_re, line) + if mas: + num_found += 1 + if not is_alpha2(mas.group(1)): + print(f"Country ISO3166-1-A2 ({mas.group(1)}) invalid at line {i} '{line}'") + errors += 1 + continue + if not mas.group(2) == mas.group(4): + print(f"Codepage mismatch ({mas.group(2)}) at line {i} '{line}'") + errors += 1 + continue + if not is_country(mas.group(1), mas.group(3)): + print(f"Country ISO3166-1-A2 ({mas.group(1)}) mismatch with International Phone Prefix at line {i} '{line}'") + errors += 1 + continue + + mlt = re.match(mlt_re, line) + if mlt: + num_found += 1 + if not is_alpha2(mlt.group(2)): + print(f"Country ISO3166-1-A2 ({mlt.group(2)}) invalid at line {i} '{line}'") + errors += 1 + continue + if not mlt.group(3) == mlt.group(5): + print(f"Codepage mismatch ({mlt.group(3)}) at line {i} '{line}'") + errors += 1 + continue + if not is_country(mlt.group(2), mlt.group(4)[2:]): + print(f"Country ISO3166-1-A2 ({mlt.group(2)}) mismatch with International Phone Prefix at line {i} '{line}'") + errors += 1 + continue + + return (errors, num_found, num_reported) + + +lines = COUNTRY_ASM.read_text(encoding='utf-8').splitlines() +errors, entries_found, entries_reported = check_master(lines) + +if entries_found != entries_reported: + print(f"Number of entries found {entries_found} != number of entries reported {entries_reported}") + sys.exit(1) + +if errors: + print(f"Errors = {errors}") + sys.exit(2) + diff --git a/country.asm b/country.asm index 0b8c78c..71d01ea 100644 --- a/country.asm +++ b/country.asm @@ -41,7 +41,7 @@ db 0FFh,"COUNTRY",0,0,0,0,0,0,0,0,1,0,1 ; reserved and undocumented values dd ent ; first entry -ent dw 171; number of entries - don't forget to update when adding a new country +ent dw 177; number of entries - don't forget to update when adding a new country ; entries ; (size, country, codepage, reserved(2), offset) @@ -120,16 +120,6 @@ __hu_850 dw 12, 36,850,0,0 dd _hu_850 __hu_858 dw 12, 36,858,0,0 dd _hu_858 -__yu_852 dw 12, 38,852,0,0 - dd _yu_852 -__yu_855 dw 12, 38,855,0,0 - dd _yu_855 -__yu_872 dw 12, 38,872,0,0 - dd _yu_872 -__yu_858 dw 12, 38,858,0,0 - dd _yu_858 -__yu_850 dw 12, 38,850,0,0 - dd _yu_850 __it_858 dw 12, 39,858,0,0 dd _it_858 __it_850 dw 12, 39,850,0,0 @@ -148,12 +138,6 @@ __ch_850 dw 12, 41,850,0,0 dd _ch_850 __ch_437 dw 12, 41,437,0,0 dd _ch_437 -__cz_852 dw 12, 42,852,0,0 - dd _cz_852 -__cz_850 dw 12, 42,850,0,0 - dd _cz_850 -__cz_858 dw 12, 42,858,0,0 - dd _cz_858 __at_858 dw 12, 43,858,0,0 dd _at_858 __at_850 dw 12, 43,850,0,0 @@ -278,21 +262,37 @@ __ua_848 dw 12,380,848,0,0 dd _ua_848 __ua_1125 dw 12,380,1125,0,0 dd _ua_1125 -__sr_855 dw 12, 381,855,0,0 ; Serbia and Montenegro, Serbian, Cyrillic - dd _sr_855 -__sr_872 dw 12, 381,872,0,0 - dd _sr_872 -__sr_852 dw 12, 381,852,0,0 ; Serbia and Montenegro, Serbian, Latin - dd _sr_852 -__sr_850 dw 12, 381,850,0,0 - dd _sr_850 -__sr_858 dw 12, 381,858,0,0 - dd _sr_858 -__hr_852 dw 12, 384,852,0,0 ; Croatia, Croatian +__rs_855 dw 12, 381,855,0,0 ; Serbia, Cyrillic + dd _rs_855 +__rs_872 dw 12, 381,872,0,0 + dd _rs_872 +__rs_852 dw 12, 381,852,0,0 ; Serbia, Latin + dd _rs_852 +__rs_850 dw 12, 381,850,0,0 + dd _rs_850 +__rs_858 dw 12, 381,858,0,0 + dd _rs_858 +__me_852 dw 12, 382,852,0,0 ; Montenegro + dd _si_852 +__me_850 dw 12, 382,850,0,0 + dd _si_850 +__me_858 dw 12, 382,858,0,0 + dd _si_858 +__xk_852 dw 12, 383,852,0,0 ; Kosovo (Temporary code) + dd _xk_852 +__xk_855 dw 12, 383,855,0,0 + dd _xk_855 +__xk_872 dw 12, 383,872,0,0 + dd _xk_872 +__xk_858 dw 12, 383,858,0,0 + dd _xk_858 +__xk_850 dw 12, 383,850,0,0 + dd _xk_850 +__hr_852 dw 12, 385,852,0,0 ; Croatia dd _hr_852 -__hr_850 dw 12, 384,850,0,0 +__hr_850 dw 12, 385,850,0,0 dd _hr_850 -__hr_858 dw 12, 384,858,0,0 +__hr_858 dw 12, 385,858,0,0 dd _hr_858 __si_852 dw 12, 386,852,0,0 ; Slovenia dd _si_852 @@ -307,9 +307,9 @@ __ba_850 dw 12, 387,850,0,0 __ba_858 dw 12, 387,858,0,0 dd _ba_858 __ba_855 dw 12, 387,855,0,0 ; Bosnia Herzegovina, Cyrillic - dd _sr_855 + dd _rs_855 __ba_872 dw 12, 387,872,0,0 - dd _sr_872 + dd _rs_872 __mk_855 dw 12, 389,855,0,0 ; Macedonia dd _mk_855 __mk_872 dw 12, 389,872,0,0 @@ -318,12 +318,24 @@ __mk_850 dw 12, 389,850,0,0 dd _mk_850 __mk_858 dw 12, 389,858,0,0 dd _mk_858 -__me_858 dw 12,785,858,0,0 - dd _me_858 -__me_850 dw 12,785,850,0,0 - dd _me_850 -__me_864 dw 12,785,864,0,0 - dd _me_864 +__cz_852 dw 12, 420,852,0,0 + dd _cz_852 +__cz_850 dw 12, 420,850,0,0 + dd _cz_850 +__cz_858 dw 12, 420,858,0,0 + dd _cz_858 +__sk_852 dw 12, 421,852,0,0 + dd _cz_852 +__sk_850 dw 12, 421,850,0,0 + dd _cz_850 +__sk_858 dw 12, 421,858,0,0 + dd _cz_858 +__xx_858 dw 12,785,858,0,0 + dd _xx_858 +__xx_850 dw 12,785,850,0,0 + dd _xx_850 +__xx_864 dw 12,785,864,0,0 + dd _xx_864 __il_858 dw 12,972,858,0,0 dd _il_858 __il_850 dw 12,972,850,0,0 @@ -942,9 +954,9 @@ _hu_858 dw 7 dd dbcs_empty dw 6,35 dd hu_yn -_yu_852 dw 7 +_xk_852 dw 7 dw 6,1 - dd yu_852 + dd xk_852 dw 6,2 dd ucase_852 dw 6,4 @@ -957,9 +969,9 @@ _yu_852 dw 7 dd dbcs_empty dw 6,35 dd sh_yn -_yu_855 dw 7 +_xk_855 dw 7 dw 6,1 - dd yu_855 + dd xk_855 dw 6,2 dd ucase_855 dw 6,4 @@ -972,9 +984,9 @@ _yu_855 dw 7 dd dbcs_empty dw 6,35 dd sh_yn_855 -_yu_872 dw 7 +_xk_872 dw 7 dw 6,1 - dd yu_872 + dd xk_872 dw 6,2 dd ucase_872 dw 6,4 @@ -987,9 +999,9 @@ _yu_872 dw 7 dd dbcs_empty dw 6,35 dd sh_yn_872 -_yu_850 dw 7 +_xk_850 dw 7 dw 6,1 - dd yu_850 + dd xk_850 dw 6,2 dd ucase_850 dw 6,4 @@ -1002,9 +1014,9 @@ _yu_850 dw 7 dd dbcs_empty dw 6,35 dd sh_yn -_yu_858 dw 7 +_xk_858 dw 7 dw 6,1 - dd yu_858 + dd xk_858 dw 6,2 dd ucase_858 dw 6,4 @@ -1197,6 +1209,51 @@ _cz_858 dw 7 dd dbcs_empty dw 6,35 dd cz_yn +_sk_852 dw 7 + dw 6,1 + dd sk_852 + dw 6,2 + dd ucase_852 + dw 6,4 + dd ucase_852 + dw 6,5 + dd fchar + dw 6,6 + dd sk_collate_852 + dw 6,7 + dd dbcs_empty + dw 6,35 + dd sk_yn +_sk_850 dw 7 + dw 6,1 + dd sk_850 + dw 6,2 + dd ucase_850 + dw 6,4 + dd ucase_850 + dw 6,5 + dd fchar + dw 6,6 + dd sk_collate_850 + dw 6,7 + dd dbcs_empty + dw 6,35 + dd sk_yn +_sk_858 dw 7 + dw 6,1 + dd sk_858 + dw 6,2 + dd ucase_858 + dw 6,4 + dd ucase_858 + dw 6,5 + dd fchar + dw 6,6 + dd sk_collate_858 + dw 6,7 + dd dbcs_empty + dw 6,35 + dd sk_yn _at_850 dw 7 dw 6,1 dd at_850 @@ -2145,9 +2202,9 @@ _ua_1125 dw 8 dd dbcs_empty dw 6,35 dd ua_yn_1125 -_sr_852 dw 7 +_rs_852 dw 7 dw 6,1 - dd sr_852 + dd rs_852 dw 6,2 dd ucase_852 dw 6,4 @@ -2160,9 +2217,9 @@ _sr_852 dw 7 dd dbcs_empty dw 6,35 dd sh_yn -_sr_855 dw 7 +_rs_855 dw 7 dw 6,1 - dd sr_855 + dd rs_855 dw 6,2 dd ucase_855 dw 6,4 @@ -2175,9 +2232,9 @@ _sr_855 dw 7 dd dbcs_empty dw 6,35 dd sh_yn_855 -_sr_872 dw 7 +_rs_872 dw 7 dw 6,1 - dd sr_872 + dd rs_872 dw 6,2 dd ucase_872 dw 6,4 @@ -2190,9 +2247,9 @@ _sr_872 dw 7 dd dbcs_empty dw 6,35 dd sh_yn_872 -_sr_850 dw 7 +_rs_850 dw 7 dw 6,1 - dd sr_850 + dd rs_850 dw 6,2 dd ucase_850 dw 6,4 @@ -2205,9 +2262,9 @@ _sr_850 dw 7 dd dbcs_empty dw 6,35 dd sh_yn -_sr_858 dw 7 +_rs_858 dw 7 dw 6,1 - dd sr_858 + dd rs_858 dw 6,2 dd ucase_858 dw 6,4 @@ -2220,6 +2277,51 @@ _sr_858 dw 7 dd dbcs_empty dw 6,35 dd sh_yn +_me_852 dw 7 + dw 6,1 + dd me_852 + dw 6,2 + dd ucase_852 + dw 6,4 + dd ucase_852 + dw 6,5 + dd fchar + dw 6,6 + dd me_collate_852 + dw 6,7 + dd dbcs_empty + dw 6,35 + dd sh_yn +_me_850 dw 7 + dw 6,1 + dd me_850 + dw 6,2 + dd ucase_850 + dw 6,4 + dd ucase_850 + dw 6,5 + dd fchar + dw 6,6 + dd me_collate_850 + dw 6,7 + dd dbcs_empty + dw 6,35 + dd sh_yn +_me_858 dw 7 + dw 6,1 + dd me_858 + dw 6,2 + dd ucase_858 + dw 6,4 + dd ucase_858 + dw 6,5 + dd fchar + dw 6,6 + dd me_collate_858 + dw 6,7 + dd dbcs_empty + dw 6,35 + dd sh_yn _hr_852 dw 7 dw 6,1 dd hr_852 @@ -2445,9 +2547,9 @@ _mk_858 dw 7 dd dbcs_empty dw 6,35 dd mk_yn -_me_850 dw 7 +_xx_850 dw 7 dw 6,1 - dd me_850 + dd xx_850 dw 6,2 dd ucase_850 dw 6,4 @@ -2455,14 +2557,14 @@ _me_850 dw 7 dw 6,5 dd fchar dw 6,6 - dd me_collate_850 + dd xx_collate_850 dw 6,7 dd dbcs_empty dw 6,35 - dd me_yn -_me_858 dw 7 + dd xx_yn +_xx_858 dw 7 dw 6,1 - dd me_858 + dd xx_858 dw 6,2 dd ucase_858 dw 6,4 @@ -2470,14 +2572,14 @@ _me_858 dw 7 dw 6,5 dd fchar dw 6,6 - dd me_collate_858 + dd xx_collate_858 dw 6,7 dd dbcs_empty dw 6,35 - dd me_yn -_me_864 dw 7 + dd xx_yn +_xx_864 dw 7 dw 6,1 - dd me_864 + dd xx_864 dw 6,2 dd ucase_864 dw 6,4 @@ -2485,11 +2587,11 @@ _me_864 dw 7 dw 6,5 dd fchar dw 6,6 - dd me_collate_864 + dd xx_collate_864 dw 6,7 dd dbcs_empty dw 6,35 - dd me_yn_864 + dd xx_yn_864 _il_850 dw 7 dw 6,1 dd il_850 @@ -3055,11 +3157,6 @@ es_437 cnf 34,437,DMY,"E","U","R",0,0,".",",","/",":",0,2,_24; Spain hu_852 cnf 36,852,YMD,"F","t", 0,0,0," ",",",".",":",3,2,_24; Hungary hu_850 cnf 36,850,YMD,"F","t", 0,0,0," ",",",".",":",3,2,_24; Hungary hu_858 cnf 36,858,YMD,"F","t", 0,0,0," ",",",".",":",3,2,_24; Hungary -yu_852 cnf 38,852,YMD,"D","i","n",0,0,".",",","-",":",2,2,_24; Yugoslavia -yu_855 cnf 38,855,YMD,0A7h,0B7h,0D4h,0,0,".",",","-",":",2,2,_24; Yugoslavia -yu_872 cnf 38,872,YMD,0A7h,0B7h,0D4h,0,0,".",",","-",":",2,2,_24; Yugoslavia -yu_850 cnf 38,850,YMD,"D","i","n",0,0,".",",","-",":",2,2,_24; Yugoslavia -yu_858 cnf 38,858,YMD,"D","i","n",0,0,".",",","-",":",2,2,_24; Yugoslavia it_850 cnf 39,850,DMY,"E","U","R",0,0,".",",","/",".",0,2,_24; Italy it_858 cnf 39,858,DMY,0D5h, 0,0,0,0,".",",","/",".",0,2,_24; Italy it_437 cnf 39,437,DMY,"E","U","R",0,0,".",",","/",".",0,2,_24; Italy @@ -3069,9 +3166,6 @@ ro_858 cnf 40,858,YMD,"L","e","i",0,0,".",",","-",":",0,2,_24; Romania ch_850 cnf 41,850,DMY,"F","r",".",0,0,"'",".",".",",",2,2,_24; Switzerland ch_858 cnf 41,858,DMY,"F","r",".",0,0,"'",".",".",",",2,2,_24; Switzerland ch_437 cnf 41,437,DMY,"F","r",".",0,0,"'",".",".",",",2,2,_24; Switzerland -cz_852 cnf 42,852,DMY,"K","C","s",0,0,".",",","-",":",2,2,_24; Czechoslovakia -cz_850 cnf 42,850,DMY,"K","C","s",0,0,".",",","-",":",2,2,_24; Czechoslovakia -cz_858 cnf 42,858,DMY,"K","C","s",0,0,".",",","-",":",2,2,_24; Czechoslovakia at_850 cnf 43,850,DMY,"E","U","R",0,0,".",",",".",".",0,2,_24; Austria at_858 cnf 43,858,DMY,0D5h, 0,0,0,0,".",",",".",".",0,2,_24; Austria at_437 cnf 43,437,DMY,"E","U","R",0,0,".",",",".",".",0,2,_24; Austria @@ -3134,14 +3228,22 @@ by_850 cnf 375,850,DMY,"B","Y","R",0,0," ",",",".",",",3,2,_24; Belarus by_858 cnf 375,858,DMY,"B","Y","R",0,0," ",",",".",",",3,2,_24; Belarus ua_848 cnf 380,848,DMY,0A3h,0E0h,0ADh,".",0," ",",",".",":",3,2,_24;Ukraine Oleg ua_1125 cnf 380,1125,DMY,0A3h,0E0h,0ADh,".",0," ",",",".",":",3,2,_24; Ukraine -sr_855 cnf 381,855,DMY,0A7h,0B7h,0D4h,0,0,".",",",".",":",3,2,_24; Serbia -sr_872 cnf 381,872,DMY,0A7h,0B7h,0D4h,0,0,".",",",".",":",3,2,_24; Serbia -sr_852 cnf 381,852,DMY,"D","i","n",0,0,".",",",".",":",3,2,_24; Serbia -sr_850 cnf 381,850,DMY,"D","i","n",0,0,".",",",".",":",3,2,_24; Serbia -sr_858 cnf 381,858,DMY,"D","i","n",0,0,".",",",".",":",3,2,_24; Serbia -hr_852 cnf 384,852,DMY,"k","n", 0,0,0,".",",",".",".",3,2,_24; Croatia -hr_850 cnf 384,850,DMY,"k","n", 0,0,0,".",",",".",".",3,2,_24; Croatia -hr_858 cnf 384,858,DMY,"k","n", 0,0,0,".",",",".",".",3,2,_24; Croatia +rs_855 cnf 381,855,DMY,0A7h,0B7h,0D4h,0,0,".",",",".",":",3,2,_24; Serbia +rs_872 cnf 381,872,DMY,0A7h,0B7h,0D4h,0,0,".",",",".",":",3,2,_24; Serbia +rs_852 cnf 381,852,DMY,"D","i","n",0,0,".",",",".",":",3,2,_24; Serbia +rs_850 cnf 381,850,DMY,"D","i","n",0,0,".",",",".",":",3,2,_24; Serbia +rs_858 cnf 381,858,DMY,"D","i","n",0,0,".",",",".",":",3,2,_24; Serbia +me_852 cnf 382,852,DMY,"E","U","R",0,0,".",",",".",":",3,2,_24; Montenegro +me_850 cnf 382,850,DMY,"E","U","R",0,0,".",",",".",":",3,2,_24; Montenegro +me_858 cnf 382,858,DMY,0D5h,0, 0, 0,0,".",",",".",":",3,2,_24; Montenegro +xk_852 cnf 383,852,YMD,"E","U","R",0,0,".",",","-",":",2,2,_24; Kosovo (Temporary code) +xk_855 cnf 383,855,YMD,"E","U","R",0,0,".",",","-",":",2,2,_24; Kosovo (Temporary code) +xk_872 cnf 383,872,YMD,"E","U","R",0,0,".",",","-",":",2,2,_24; Kosovo (Temporary code) +xk_850 cnf 383,850,YMD,"E","U","R",0,0,".",",","-",":",2,2,_24; Kosovo (Temporary code) +xk_858 cnf 383,858,YMD,0D5h,0, 0, 0,0,".",",","-",":",2,2,_24; Kosovo (Temporary code) +hr_852 cnf 385,852,DMY,"E","U","R",0,0,".",",",".",".",3,2,_24; Croatia +hr_850 cnf 385,850,DMY,"E","U","R",0,0,".",",",".",".",3,2,_24; Croatia +hr_858 cnf 385,858,DMY,0D5h,0, 0, 0,0,".",",",".",".",3,2,_24; Croatia si_852 cnf 386,852,DMY,"S","I","T",0,0,".",",",".",":",3,2,_24; Slovenia si_850 cnf 386,850,DMY,"S","I","T",0,0,".",",",".",":",3,2,_24; Slovenia si_858 cnf 386,858,DMY,"S","I","T",0,0,".",",",".",":",3,2,_24; Slovenia @@ -3154,9 +3256,15 @@ mk_855 cnf 389,855,DMY,0A7h,0A8h,0D4h,0,0,".",",",".",":",3,2,_24; Macedonia mk_872 cnf 389,872,DMY,0A7h,0A8h,0D4h,0,0,".",",",".",":",3,2,_24; Macedonia mk_850 cnf 389,850,DMY,"D","e","n",0,0,".",",",".",":",3,2,_24; Macedonia mk_858 cnf 389,858,DMY,"D","e","n",0,0,".",",",".",":",3,2,_24; Macedonia -me_864 cnf 785,864,DMY,0A4h, 0,0,0,0,".",",","/",":",1,3,_12; Middle East -me_850 cnf 785,850,DMY,0CFh, 0,0,0,0,".",",","/",":",3,3,_12; Middle East -me_858 cnf 785,858,DMY,0CFh, 0,0,0,0,".",",","/",":",3,3,_12; Middle East +cz_852 cnf 420,852,DMY,"K","C","s",0,0,".",",","-",":",2,2,_24; Czech Republic +cz_850 cnf 420,850,DMY,"K","C","s",0,0,".",",","-",":",2,2,_24; Czech Republic +cz_858 cnf 420,858,DMY,"K","C","s",0,0,".",",","-",":",2,2,_24; Czech Republic +sk_852 cnf 421,852,DMY,"E","U","R",0,0,".",",","-",":",2,2,_24; Slovakia +sk_850 cnf 421,850,DMY,"E","U","R",0,0,".",",","-",":",2,2,_24; Slovakia +sk_858 cnf 421,858,DMY,0D5h,0, 0, 0,0,".",",","-",":",2,2,_24; Slovakia +xx_864 cnf 785,864,DMY,0A4h, 0,0,0,0,".",",","/",":",1,3,_12; Middle East +xx_850 cnf 785,850,DMY,0CFh, 0,0,0,0,".",",","/",":",3,3,_12; Middle East +xx_858 cnf 785,858,DMY,0CFh, 0,0,0,0,".",",","/",":",3,3,_12; Middle East il_862 cnf 972,862,DMY,99h, 0,0,0,0,",","."," ",":",2,2,_24; Israel il_850 cnf 972,850,DMY,"N","I","S",0,0,",","."," ",":",2,2,_24; Israel il_858 cnf 972,858,DMY,"N","I","S",0,0,",","."," ",":",2,2,_24; Israel @@ -4501,6 +4609,10 @@ cz_collate_852 equ ru_collate_852 ; Czech, CP852 cz_collate_850 equ pl_collate_850 ; Czech, CP850 cz_collate_858 equ gr_collate_858 ; Czech, CP858 +sk_collate_852 equ cz_collate_852 ; Slovakia, CP852 +sk_collate_850 equ cz_collate_850 ; Slovakia, CP850 +sk_collate_858 equ cz_collate_858 ; Slovakia, CP858 + se_collate_850 db 0FFh,"COLLATE" ; Swedish, CP850 dw 256 db 0, 1, 2, 3, 4, 5, 6, 7 @@ -4839,6 +4951,10 @@ hr_collate_852 equ ru_collate_852 ; Croatian, CP852 hr_collate_850 equ pl_collate_850 ; Croatian, CP850 hr_collate_858 equ gr_collate_858 ; Croatian, CP858 +me_collate_852 equ ru_collate_852 ; Montenegro, CP852 +me_collate_850 equ pl_collate_850 ; Montenegro, CP850 +me_collate_858 equ gr_collate_858 ; Montenegro, CP858 + si_collate_852 equ ru_collate_852 ; Slovenian, CP852 si_collate_850 equ pl_collate_850 ; Slovenian, CP850 si_collate_858 equ gr_collate_858 ; Slovenian, CP858 @@ -4886,7 +5002,7 @@ db 248, 249, 250, 251, 252, 253, 254, 255 il_collate_850 equ en_collate_850 il_collate_858 equ en_collate_858 -me_collate_864 db 0FFh,"COLLATE" ; Arabic, CP864 +xx_collate_864 db 0FFh,"COLLATE" ; Arabic, CP864 dw 256 db 0, 1, 2, 3, 4, 5, 6, 7 db 8, 9, 10, 11, 12, 13, 14, 15 @@ -4921,8 +5037,8 @@ db 206, 207, 208, 194, 197, 198, 198, 203 db 209, 209, 204, 205, 205, 207, 208, 198 db 200, 202, 202, 202, 201, 208, 254, 255 -me_collate_850 equ en_collate_850 -me_collate_858 equ en_collate_858 +xx_collate_850 equ en_collate_850 +xx_collate_858 equ en_collate_858 ; Dual Byte Character Sets ; lead-byte ranges @@ -5053,6 +5169,8 @@ cz_yn db 0FFh,"YESNO " dw 4 db 'A','0','N',0 ; Czech +sk_yn equ cz_yn ; Slovakia + pl_yn db 0FFh,"YESNO " dw 4 db 'T','0','N',0 ; Polish @@ -5089,11 +5207,11 @@ il_yn_862 db 0FFh,"YESNO " dw 4 db 8Bh,'0',8Ch,0 ; Hebrew, CP862 -me_yn db 0FFh,"YESNO " +xx_yn db 0FFh,"YESNO " dw 4 db 'N','0','L',0 ; Arabic, latin alphabet (Nam, La) -me_yn_864 db 0FFh,"YESNO " +xx_yn_864 db 0FFh,"YESNO " dw 4 db 0F2h,'0',9Dh,0 ; Arabic, CP864