Assembly Language Help (alang.hlp) (
Table of Contents;
Topic list)
Important Notice
The pages on this site contain documentation for very old MS-DOS software,
purely for historical purposes.
If you're looking for up-to-date documentation, particularly for programming,
you should not rely on the information found here, as it will be woefully
out of date.
Int 21h Function 65h
◄Summary► ◄Up► ◄Contents► ◄Index► ◄Back►
────────────────────────────────────────────────────────────────────────────
The information returned by this function is a superset of the
information returned by Int 21h Function 38h.
This function may fail if either the country code or the code page
number is invalid or if the code page does not match the country
code.
The function fails if the specified buffer length is less than
five bytes. If the buffer to receive the information is at least
five bytes long but is too short for the requested information,
the data is truncated and no error is returned.
The format of the data returned by Subfunction 01h is:
Bytes Contents
00h Information ID code (1)
01h-02h Length of following buffer
03h-04h Country ID
05h-06h Code page number
07h-08h Date format
0 = USA (m d y)
1 = Europe (d m y)
2 = Japan (y m d)
09h-0Dh ASCIIZ currency symbol
0Eh-0Fh ASCIIZ thousands separator
10h-11h ASCIIZ decimal separator
12h-13h ASCIIZ date separator
14h-15h ASCIIZ time separator
16h Currency format flags
Bit 0 = 0 (if currency symbol precedes value)
= 1 (if currency symbol follows value)
Bit 1 = 0 (if no space between value and
currency symbol)
= 1 (if one space between value and
currency symbol)
Bit 2 = 0 (if currency symbol and decimal
are separate)
= 1 (if currency symbol replaces
decimal separator)
17h Number of digits after decimal in
currency
18h Time format
Bit 0 = 0 (if 12-hour clock)
= 1 (if 24-hour clock)
19h-1Ch Case-map routine call address
1Dh-1Eh ASCIIZ data list separator
1Fh-28h Reserved
The format of the data returned by Subfunctions 02h, 04h, 06h, and
07h is:
Bytes Contents
00h Information ID code (2, 4, 6, or 7)
01h-04h Double-word pointer to table
The uppercase and filename uppercase tables are a maximum of 130
bytes long. The first two bytes contain the size of the table; the
following bytes contain the uppercase equivalents, if any, for
character codes 80h-FFh. The main use of these tables is to map
accented or otherwise modified vowels to their plain vowel
equivalents. Text translated with the help of this table can be
sent to devices that do not support the IBM graphics character
set, or used to create filenames that do not require a special
keyboard configuration for entry.
The collating table is a maximum of 258 bytes long. The first two
bytes contain the table length, and the subsequent bytes contain
the values to be used for the corresponding character codes
(0-FFh) during a sort operation. This table maps uppercase and
lowercase ASCII characters to the same collating codes so that
sorts will be case insensitive, and it maps accented vowels to
their plain vowel equivalents.
[Version 4.0+]
Subfunction 07h returns a pointer to a variable-length table that
defines ranges for double-byte character set (DBCS) lead bytes.
The table is terminated by a pair of zero bytes, unless it must be
truncated to fit in the buffer, and has the following format:
WORD length
BYTE start1, end1
BYTE start2, end2
.
.
.
BYTE 0, 0
For example:
WORD 4
BYTE 81h, 9fh
BYTE 0e0h, 0fch
BYTE 0, 0
In some cases a truncated translation table may be presented to
the program by MS-DOS. Applications should always check the length
at the beginning of the table to ensure that it contains a
translation code for the particular character of interest.
-♦-