Note: This API call is for DOS and Win16 personality only. Use Family API for portability.
3 and higher
SET COUNTRY CODE/GET COUNTRY-SPECIFIC INFORMATION
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)
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
          
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
AH=65h,INT 10/AX=5001h,INT 2F/AX=1404h, INT 2F/AX=1403h
Text based on Ralf Brown Interrupt List Release 61
| osFree Macro Library | |
|---|---|
| Video I/O | @SetMode @SetCurSz @SetCurPos @GetCur @SetPage @ScrollUp @ScrollDn @Scroll @GetChAtr @PutChAtr @PutCh @SetPalet @SetColor @SetDot @GetDot @WrtTTY @VideoState @GetMode @GetDisplay @GetVideoState @GetEGAInfo @Cls | 
| Hardware info | @Equipment @MemSize | 
| Serial I/O | @AuxInit @AuxSendChar @AuxRecieveChar @AuxStatus | 
| Tape I/O | @TapeOn @TapeOff @TapeRead @TapeWrite | 
| Keyboard I/O | @KbdStatus @CharIn @CharPeek | 
| Printer I/O | @PrnPrint @PrnInit @PrnStatus | 
| Disk I/O | @DskReset @DskStatus @DskRead @DskWrite @DskVerify @DskFormat | 
| Date and Time | @SetTime @GetTime | 
| Mouse | @MouInit @MouShowPointer @MouStatus @MouSetPos @MouSetMickey @MouRegion | 
| Memory manager | @ModBlok SET_BLOCK |