Int 21 Fn 65 - Dos 3.3+ - Get Extended Country Information [D]

AH = 65h
AL = info ID
01h get general internationalization info
02h get pointer to uppercase table
03h (DOS 6.2+ COUNTRY.SYS) get pointer to lowercase table
04h get pointer to filename uppercase table
05h get pointer to filename terminator table
06h get pointer to collating sequence table
07h (DOS 4.0+) get pointer to Double-Byte Character Set table
BX = code page (FFFFh=global code page) (see #1446)
DX = country ID (FFFFh=current country)
ES:DI -> country information buffer (see #1439)
CX = size of buffer (>= 5)

Return: CF set on error
AX = error code (see #1366 at AH=59h/BX=0000h)
CF clear if successful
CX = size of country information returned
ES:DI -> country information (see #1439)

Notes: AL=05h appears to return same info for all countries and codepages; it
has been documented for DOS 5+, but was undocumented in earlier
versions
NLSFUNC must be installed to get info for countries other than the
default
subfunctions 02h and 04h are identical under OS/2
subfunction 03h apparently supports only codepage 866 in DOS 6.2x

See Also: AH=38h,AH=70h"MS-DOS 7",INT 2F/AX=1401h,INT 2F/AX=1402h

See Also: INT 2F/AX=14FEh

Format of country information:
Offset Size Description (Table 1439)
00h BYTE info ID
---if info ID = 01h---
02h WORD size of following info in bytes
04h WORD country ID (see #1088 at AH=38h)
06h WORD code page (see #1446)
08h 34 BYTEs country-dependent info (see #1087 at AH=38h)
---if info ID = 02h---
01h DWORD pointer to uppercase table (see #1440)
---if info ID = 03h---
01h DWORD pointer to lowercase table (see #1441)
---if info ID = 04h---
01h DWORD pointer to filename uppercase table (see #1442)
---if info ID = 05h---
01h DWORD pointer to filename character table (see #1443)
---if info ID = 06h---
01h DWORD pointer to collating table (see #1444)
---if info ID = 07h (DOS 4.0+)---
01h DWORD pointer to DBCS lead byte table (see #1445)

See Also: #1464

Format of uppercase table:
Offset Size Description (Table 1440)
00h WORD table size (0080h)
02h 128 BYTEs uppercase equivalents (if any) of chars 80h to FFh

See Also: #1439,#1442

Format of lowercase table:
Offset Size Description (Table 1441)
00h WORD table size (0100h)
02h 256 BYTEs lowercase equivalents (if any) of chars 00h to FFh

See Also: #1439,#1442

Format of filename uppercase table:
Offset Size Description (Table 1442)
00h WORD table size (0080h)
02h 128 BYTEs uppercase equivalents (if any) of chars 80h to FFh

See Also: #1439,#1440

Format of filename terminator table:
Offset Size Description (Table 1443)
00h WORD table size (not counting this word)
02h BYTE ??? (01h for MS-DOS 3.30-6.00)
03h BYTE lowest permissible character value for filename
04h BYTE highest permissible character value for filename
05h BYTE ??? (00h for MS-DOS 3.30-6.00)
06h BYTE first excluded character in range \ all characters in this
07h BYTE last excluded character in range / range are illegal
08h BYTE ??? (02h for MS-DOS 3.30-6.00)
09h BYTE number of illegal (terminator) characters
0Ah N BYTEs characters which terminate a filename: ."/\[]:|<>+=;,

Note: partially documented for DOS 5+, but undocumented for earlier versions

See Also: #1439

Format of collating table:
Offset Size Description (Table 1444)
00h WORD table size (0100h)
02h 256 BYTEs values used to sort characters 00h to FFh

See Also: #1439

Format of DBCS lead byte table:
Offset Size Description (Table 1445)
00h WORD length of table in ranges
02h 2N BYTEs start/end for N lead byte ranges
WORD 0000h (end of table)

See Also: #1439