en:docs:dos:api:int21:63:00

Note: This API call is for DOS and Win16 personality only. Use Family API for portability.

2018/09/07 05:04 · prokushev · 0 Comments

Int 21H, AH=63H, AL=00H

Version

2.25, 3.2 and higher

Brief

GET LEAD BYTE TABLE ADDRESS

Family API

Input

  • AX = 6300h

Return

  • CF clear if successful
    • DS:SI → lead byte table (see #01746)
  • CF set on error
    • AX = error code (01h) (see #01680 at AH=59h/BX=0000h)

note: NO CF flag used in some versions

  • AL = error code
    • 00h successful all other registers except CS:IP and SS:SP destroyed
    • FFh not supported

Macro

Notes

Does not preserve any registers other than SS:SP.

Probably identical to AH=63h/AL=00h for DOS 2.25, but error handling differs

The US version of MS-DOS 3.30 treats this as an unused function, setting AL=00h and returning immediately, WITHOUT setting DS:SI; only the Far East versions of MS-DOS 3.2 and 3.3 supported this call.

The US version of DOS 4.0+ accepts this function, but returns an empty list.

IBM DOS 6.1 SYS.COM assumes that CF is set on error

To get the DBCS lead byte table without complicated DOS version checks, set the DS:SI registers to 0:0 before calling the API. If a valid DBCS lead byte table is returned, the DS:SI registers will be modified (the table can’t possibly be stored at 0:0). If DS:SI are still 0:0, the API is not implemented, the DOS is not a Far East version, and hence there are no double-byte characters and no lead byte table.

Format of double-byte character set lead byte table entry:

Offset Size Description
00h 2 BYTEs low/high ends of a range of leading byte of double-byte chars
02h 2 BYTEs low/high ends of a range of leading byte of double-byte chars
N 2 BYTEs 00h,00h end flag

See also

Note

2018/09/04 17:23 · prokushev · 0 Comments