BX extended open mode flags (see below)
DX action: 00-0h = if file exists, fail the call
00-1h = if file exists, open it
00-2h = if file exists, replace and open it
000-h = if doesn't exist, fail the call
001-h = if doesn't exist, create and open it
DS:SI address of an ASCIIZ string of a filespec to open
CX action taken: 0 file was opened
1 file was created and opened
2 file was replaced and opened
Info: This function opens (or creates and opens) a file. Think of it
as a smart 3dH Open which can optionally 3cH Create the file if
Additionally, this call can disable normal INT 24h critical error
handling and can force all writes to go direct to the disk.
DS:DX points to an ASCIIZ string in the form...
If the drive or path is omitted, defaults are assumed.
BX On entry, BX contains extended mode flags as follows:
5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 See Open Mode for more
0 d f 0 0 0 0 0 i shr 0 r/w info on bits 0-7
0-2: read/write access mode
14: 0=normal file buffering
If bit 13 is set (2000H), then I/O through this handle will never
cause an INT 24H critical error. If a drive door is open (etc.),
then the function which caused the error will fail with a regular
DOS error. Use Fn 59H to find out what happened.
If bit 14 is set (4000H), then the normal DOS output buffering is
bypassed and all output goes directly to the disk (as if you had
called Fn 68H after each write). This can hurt I/O performance,
(read-only, hidden, etc.). Use 0000H for normal files. If the
file exists, CX is ignored.
DX This controls the open/create action, depending upon whether the
file exists at the time of the call. Common combinations are:
0001H = open the file if it exists; otherwise fail the call
0011H = open the file if it exists; otherwise create it
0012H = if the file exists open and truncate it to length 0;
otherwise create it and open it
Notes: Perhaps the most useful feature here is the ability to avoid
special handling for INT 24H critical errors. Of course, you
can only discard your INT 24H handler if you are sure that the
application is used only under DOS 4.0+.