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

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
en:docs:dos:api:int21:63:00 [2021/08/06 03:18] – created prokusheven:docs:dos:api:int21:63:00 [2025/07/20 01:39] (current) prokushev
Line 1: Line 1:
 {{page>en:templates:dosint}} {{page>en:templates:dosint}}
  
-====== Int 21H, AH=33H, AL=06H ======+====== Int 21H, AH=63H, AL=00H ======
  
 ===== Version ===== ===== Version =====
Line 13: Line 13:
 ===== Family API ===== ===== Family API =====
  
 +[[en:docs:fapi:DosGetDBCSEv]]
  
 ===== Input ===== ===== Input =====
  
-        AX = 6300h+  * AX = 6300h
  
 ===== Return ===== ===== Return =====
  
-  CF clear if successful +  CF clear if successful 
-  DS:SI -> lead byte table (see #01746) +    DS:SI -> lead byte table (see #01746) 
-  CF set on error +  CF set on error 
-  AX = error code (01h) (see #01680 at AH=59h/BX=0000h)+    AX = error code (01h) (see #01680 at AH=59h/BX=0000h)
  
-  note: NO CF flag used in some versions +note: NO CF flag used in some versions 
-  AL = error code + 
-    00h successful all other registers except CS:IP and SS:SP destroyed +    * AL = error code 
-    FFh not supported+      00h successful all other registers except CS:IP and SS:SP destroyed 
 +      FFh not supported
        
 ===== Macro ===== ===== Macro =====
Line 35: Line 37:
 ===== Notes ===== ===== Notes =====
  
-  Does not preserve any registers other than SS:SP. +Does not preserve any registers other than SS:SP.
-  Probably identical to AH=63h/AL=00h for DOS 2.25. 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+
  
-  Format of double-byte character set lead byte table entry:+Probably identical to AH=63h/AL=00h for DOS 2.25, but error handling differs
  
-  Offset  Size    Description     (Table 01746) +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.
-  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 =====+The US version of DOS 4.0+ accepts this function, but returns an empty list.
  
-  AX=6301h AH=07h AH=08h AH=0Bh+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 ===== ===== Note =====