{{page>en:templates:dosint}} ====== Int 21H, AH=38H, AL=01H ====== ===== Version ===== 3 and higher ===== Brief ===== SET COUNTRY CODE/GET COUNTRY-SPECIFIC INFORMATION ===== Family API ===== ===== Input ===== Get: AL = 01h thru 0FEh for specific country with code <255 (see #01400) AL = 0FFh for specific country with code >= 255 BX = 16-bit country code (see #01400) DS:DX -> buffer for returned info (see #01399) Set: AH = 38h DX = FFFFh AL = 01h thru FEh for specific country with code <255 AL = FFh for specific country with code >= 255 BX = 16-bit country code (see #01400) ===== Return ===== Get: CF set on error AX = error code (02h) CF clear if successful AX = country code (Novell NWDOS v7.0) BX = country code DS:DX buffer filled Set: CF set on error AX = error code (see #01680 at AH=59h/BX=0000h) CF clear if successful ===== Macro ===== ===== Notes ===== this function is not supported by the Borland DPMI host, but no error is returned; as a workaround, one should allocate a buffer in conventional memory with INT 31/AX=0100h and simulate an INT 21 with INT 31/AX=0300h Format of DOS 2.00-2.10 country info: ^ Offset ^ Size ^ Description ^ | 00h | WORD | date format 0 = USA mm dd yy 1 = Europe dd mm yy 2 = Japan yy mm dd | | 02h | BYTE | currency symbol | | 03h | BYTE | 00h | | 04h | BYTE | thousands separator char | | 05h | BYTE | 00h | | 06h | BYTE | decimal separator char | | 07h | BYTE | 00h | | 08h | 24 BYTEs | reserved | Format of DOS 2.11+ country info: ^ Offset ^ Size ^ Description ^ | 00h | WORD | date format (see #01398) | | 02h | 5 BYTEs | ASCIZ currency symbol string | | 07h | 2 BYTEs | ASCIZ thousands separator | | 09h | 2 BYTEs | ASCIZ decimal separator | | 0Bh | 2 BYTEs | ASCIZ date separator | | 0Dh | 2 BYTEs | ASCIZ time separator | | 0Fh | BYTE | currency format | | ::: | ::: | bit 2 = set if currency symbol replaces decimal point | | ::: | ::: | bit 1 = number of spaces between value and currency symbol | | ::: | ::: | bit 0 = 0 if currency symbol precedes value | | ::: | ::: | 1 if currency symbol follows value | | 10h | BYTE | number of digits after decimal in currency | | 11h | BYTE | time format | | ::: | ::: | bit 0 = 0 if 12-hour clock | | ::: | ::: | 1 if 24-hour clock | | 12h | DWORD | address of case map routine (FAR CALL, AL = character to map to upper case [>= 80h]) | | 16h | 2 BYTEs | ASCIZ data-list separator | | 18h | 10 BYTEs | reserved | Values for country code: | 001h (1) | United States | | 002h (2) | Canadian-French | | 003h (3) | Latin America | | 004h (4) | Canada (English) | | 007h (7) | Russia | | 014h (20) | Egypt | | 01Bh (27) | South Africa | | 01Eh (30) | Greece | | 01Fh (31) | Netherlands | | 020h (32) | Belgium | | 021h (33) | France | | 022h (34) | Spain | | 023h (35) | Bulgaria??? | | 024h (36) | Hungary (not supported by DR DOS 5.0) | | 026h (38) | Yugoslavia (not supported by DR DOS 5.0) -- obsolete | | 027h (39) | Italy / San Marino / Vatican City | | 028h (40) | Romania | | 029h (41) | Switzerland / Liechtenstein | | 02Ah (42) | Czechoslovakia / Tjekia / Slovakia (not supported by DR DOS 5.0) | | 02Bh (43) | Austria (DR DOS 5.0) | | 02Ch (44) | United Kingdom | | 02Dh (45) | Denmark | | 02Eh (46) | Sweden | | 02Fh (47) | Norway | | 030h (48) | Poland (not supported by DR DOS 5.0) | | 031h (49) | Germany | | 033h (51) | Peru | | 034h (52) | Mexico | | 035h (53) | Cuba | | 036h (54) | Argentina | | 037h (55) | Brazil (not supported by DR DOS 5.0) | | 038h (56) | Chile | | 039h (57) | Columbia | | 03Ah (58) | Venezuela | | 03Ch (60) | Malaysia | | 03Dh (61) | International English / Australia | | 03Eh (62) | Indonesia / East Timor | | 03Fh (63) | Philippines | | 040h (64) | New Zealand | | 041h (65) | Singapore | | 042h (66) | Thailand (or Taiwan???) | | 051h (81) | Japan (DR DOS 5.0, MS-DOS 5.0+) | | 052h (82) | South Korea (DR DOS 5.0) | | 054h (84) | Vietnam | | 056h (86) | China (MS-DOS 5.0+) | | 058h (88) | Taiwan (MS-DOS 5.0+) | | 05Ah (90) | Turkey (MS-DOS 5.0+) | | 05Bh (91) | India | | 05Ch (92) | Pakistan | | 05Dh (93) | Afghanistan | | 05Eh (94) | Sri Lanka | | 062h (98) | Iran | | 063h (99) | Asia (English) | | 066h (102) | ??? (Hebrew MS-DOS 5.0) | | 070h (112) | Belarus | | 0C8h (200) | Thailand (PC DOS 6.1+) (reported as 01h due to a bug in PC DOS COUNTRY.SYS) | | 0D4h (212) | Morocco | | 0D5h (213) | Algeria | | 0D8h (216) | Tunisia | | 0DAh (218) | Libya | | 0DCh (220) | Gambia | | 0DDh (221) | Senegal | | 0DEh (222) | Maruitania | | 0DFh (223) | Mali | | 0E0h (224) | African Guinea | | 0E1h (225) | Ivory Coast | | 0E2h (226) | Burkina Faso | | 0E3h (227) | Niger | | 0E4h (228) | Togo | | 0E5h (229) | Benin | | 0E6h (230) | Mauritius | | 0E7h (231) | Liberia | | 0E8h (232) | Sierra Leone | | 0E9h (233) | Ghana | | 0EAh (234) | Nigeria | | 0EBh (235) | Chad | | 0ECh (236) | Centra African Republic | | 0EDh (237) | Cameroon | | 0EEh (238) | Cape Verde Islands | | 0EFh (239) | Sao Tome and Principe | | 0F0h (240) | Equatorial Guinea | | 0F1h (241) | Gabon | | 0F2h (242) | Congo | | 0F3h (243) | Zaire | | 0F4h (244) | Angola | | 0F5h (245) | Guinea-Bissau | | 0F6h (246) | Diego Garcia | | 0F7h (247) | Ascension Isle | | 0F8h (248) | Seychelles | | 0F9h (249) | Sudan | | 0FAh (250) | Rwhanda | | 0FBh (251) | Ethiopia | | 0FCh (252) | Somalia | | 0FDh (253) | Djibouti | | 0FEh (254) | Kenya | | 0FFh (255) | Tanzania | | 100h (256) | Uganda | | 101h (257) | Burundi | | 103h (259) | Mozambique | | 104h (260) | Zambia | | 105h (261) | Madagascar | | 106h (262) | Reunion Island | | 107h (263) | Zimbabwe | | 108h (264) | Namibia | | 109h (265) | Malawi | | 10Ah (266) | Lesotho | | 10Bh (267) | Botswana | | 10Ch (268) | Swaziland | | 10Dh (269) | Comoros | | 10Eh (270) | Mayotte | | 122h (290) | St. Helena | | 129h (297) | Aruba | | 12Ah (298) | Faroe Islands | | 12Bh (299) | Greenland | | 15Eh (350) | Gibraltar | | 15Fh (351) | Portugal | | 160h (352) | Luxembourg | | 161h (353) | Ireland | | 162h (354) | Iceland | | 163h (355) | Albania | | 164h (356) | Malta | | 165h (357) | Cyprus | | 166h (358) | Finland | | 167h (359) | Bulgaria | | 172h (370) | Lithuania (reported as 372 due to a bug in MS-DOS COUNTRY.SYS) | | 173h (371) | Latvia (reported as 372 due to a bug in MS-DOS COUNTRY.SYS) | | 174h (372) | Estonia | | 175h (373) | Moldova | | 177h (375) | ??? (MS-DOS 7.10 / Windows98) | | 17Ch (380) | Ukraine | | 17Dh (381) | Serbia / Montenegro | | 180h (384) | Croatia | | 181h (385) | Croatia (PC DOS 7+) | | 182h (386) | Slovenia | | 183h (387) | Bosnia-Herzegovina (Latin) | | 184h (388) | Bosnia-Herzegovina (Cyrillic) (PC DOS 7+) (reported as 381 due to a bug in PC DOS COUNTRY.SYS) | | 185h (389) | FYR Macedonia | | 1A5h (421) | Czech Republic / Tjekia (PC DOS 7+) | | 1A6h (422) | Slovakia (reported as 421 due to a bug in COUNTRY.SYS) | | 1F4h (500) | Falkland Islands | | 1F5h (501) | Belize | | 1F6h (502) | Guatemala | | 1F7h (503) | El Salvador | | 1F8h (504) | Honduras | | 1F9h (505) | Nicraragua | | 1FAh (506) | Costa Rica | | 1FBh (507) | Panama | | 1FCh (508) | St. Pierre and Miquelon | | 1FDh (509) | Haiti | | 24Eh (590) | Guadeloupe | | 24Fh (591) | Bolivia | | 250h (592) | Guyana | | 251h (593) | Ecuador | | 252h (594) | French Guiana | | 253h (595) | Paraguay | | 254h (596) | Martinique / French Antilles | | 255h (597) | Suriname | | 256h (598) | Uruguay | | 257h (599) | Netherland Antilles | | 29Ah (666) | Russia??? (PTS-DOS 6.51 KEYB) | | 29Bh (667) | Poland??? (PTS-DOS 6.51 KEYB) | | 29Ch (668) | Poland??? (Slavic???) (PTS-DOS 6.51 KEYB) | | 29Eh (670) | Saipan / N. Mariana Island | | 29Fh (671) | Guam | | 2A0h (672) | Norfolk Island (Australia) / Christmas Island/Cocos Islands / Antartica | | 2A1h (673) | Brunei Darussalam | | 2A2h (674) | Nauru | | 2A3h (675) | Papua New Guinea | | 2A4h (676) | Tonga Islands | | 2A5h (677) | Solomon Islands | | 2A6h (678) | Vanuatu | | 2A7h (679) | Fiji | | 2A8h (680) | Palau | | 2A9h (681) | Wallis & Futuna | | 2AAh (682) | Cook Islands | | 2ABh (683) | Niue | | 2ACh (684) | American Samoa | | 2ADh (685) | Western Samoa | | 2AEh (686) | Kiribati | | 2AFh (687) | New Caledonia | | 2B0h (688) | Tuvalu | | 2B1h (689) | French Polynesia | | 2B2h (690) | Tokealu | | 2B3h (691) | Micronesia | | 2B4h (692) | Marshall Islands | | 2C7h (711) | ??? (currency = EA$, code pages 437,737,850,852,855,857) | | 311h (785) | Arabic (Middle East/Saudi Arabia/etc.) | | 324h (804) | Ukraine | | 329h (809) | Antigua and Barbuda / Anguilla / Bahamas / Barbados / Bermuda / British Virgin Islands / Cayman Islands / Dominica / Dominican Republic / Grenada / Jamaica / Montserra / St. Kitts and Nevis / St. Lucia / St. Vincent and Grenadines / Trinidad and Tobago / Turks and Caicos | | 352h (850) | North Korea | | 354h (852) | Hong Kong | | 355h (853) | Macao | | 357h (855) | Cambodia | | 358h (856) | Laos | | 370h (880) | Bangladesh | | 376h (886) | Taiwan (MS-DOS 6.22+) | | 3C0h (960) | Maldives | | 3C1h (961) | Lebanon | | 3C2h (962) | Jordan | | 3C3h (963) | Syria / Syrian Arab Republic | | 3C4h (964) | Iraq | | 3C5h (965) | Kuwait | | 3C6h (966) | Saudi Arabia | | 3C7h (967) | Yemen | | 3C8h (968) | Oman | | 3C9h (969) | Yemen??? (Arabic MS-DOS 5.0) | | 3CBh (971) | United Arab Emirates | | 3CCh (972) | Israel (Hebrew) (DR DOS 5.0,MS-DOS 5.0+) | | 3CDh (973) | Bahrain | | 3CEh (974) | Qatar | | 3CFh (975) | Bhutan | | 3D0h (976) | Mongolia | | 3D1h (977) | Nepal | | 3E3h (995) | Myanmar (Burma) | | (10xxx) | reserved for ISO 28601/ISO 8601 or derivative national stds | | (11xxx) | reserved for Euro currency support | | (12xxx) | reserved for ISO 28601 + Euro currency | | (1xxxx) | not yet defined | | (20xxx) | reserved for ISO 28601/ISO 8601 or derivative national stds | | (21xxx) | reserved for Euro currency support | | (22xxx) | reserved for ISO 28601 + Euro currency | | (2xxxx) | not yet defined | | (30xxx) | reserved for user-definable country codes | | (31xxx) | reserved for OEM-defined country codes | | (32000+) | reserved for future expansion | Note: not all country codes are supported by all versions of DOS ===== See also ===== AH=[[en:docs:dos:api:int21:65|65h]],INT 10/AX=5001h,INT 2F/AX=1404h, INT 2F/AX=1403h ===== Note ===== Text based on [[http://www.cs.cmu.edu/~ralf/files.html|Ralf Brown Interrupt List Release 61]] {{page>en:templates:int}} {{page>en:templates:fapi}}