Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -116,6 +116,9 @@ Notes: the OS/2 v1.x Compatibility Box returns major version 0Ah (10)
MS-DOS v4.01 command.com oddity, the bundled shell may display these
as v5.27 or v5.39 instead). The lDOS kernel recreates most MS-DOS v5
features and some MS-DOS v7.00 ones.
it is said that the major version is returned in AL because it was
expected that callers commonly would want to check only the major
version, which is 1 byte shorter with CMP AL,imm than CMP AH,imm
BUGS: FreeDOS sources note that "32RTM won't like non-zero values" in CX
SeeAlso: AX=3000h/BX=3000h,AX=3306h"DOS",AX=4452h,AH=87h,INT 15/AX=4900h
SeeAlso: AH=20h"S/DOS",INT 2F/AX=122Fh,INT 2F/AX=4010h,INT 2F/AX=4A33h
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
--------------------------------------------------------------------------------
Unique ID: 2D--10
Category: U resident utilities
Flag: n/a
--------------------------------------------------------------------------------

INT 2D - lDOS TSRs - GET COMPATIBLE VERSION
AH = AMIS multiplex number
AL = 10h
Return: AL = FFh if supported
CX = compatible version number (binary, major in CH minor in CL)
SeeAlso: AL=00h
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
--------------------------------------------------------------------------------
Unique ID: 2D--11
Category: D DOS kernel
Flag: n/a
--------------------------------------------------------------------------------

INT 2D - lDOS kernel - CHECK ID
AH = AMIS multiplex number for lDOS kernel (usually 00h)
AL = 11h
DX:SI -> ID structure,
WORD 00h: reserved, zero
WORD 02h: ID sequential number
BYTE 04h: string length
N BYTEs 05h: ID string (no terminator)
Return: AL = 00h if function not supported
AL >= F0h if ID accepted
(currently AL = F0h if accepted)
BX = CX = DX = reserved, 0 for now
otherwise ID rejected
(currently AL = E0h if ID string not found)
(currently AL = E1h if sequential is below accepted)
(currently AL = E2h if sequential is above accepted)
BX = CX = DX = reserved, 0 for now
destroys AL, BX, CX, DX, SI, DI
Notes: the following IDs are recognised in the current kernel tables:
sharer, command, format, ansi, append, assign, attrib,
backup, chkdsk, command, comp, debug, diskcomp,
diskcopy, display, driver.sys, edlin, exe2bin,
fastopen, fdisk, filesys, find, graftabl, graphics,
ifsfunc, join, keyb, label, mem, mode, more, nlsfunc,
print, printer, recover, replace, restore, sort, subst,
tree, vdisk, xcopy
all of the above IDs currently accept sequentials 0000h to 00FFh
the idea is to reject certain sequentials in the future if
incompatible changes are made to the kernel, eg SFT layout.
the kernel tables are intentionally not discoverable on the
multiplexer interface, allowing them to be changed freely.
the idea of marking certain compatibility levels using
sequential numbers goes back to lRxDOS plans.
SeeAlso: AL=00h,AL=10h,INT 21/AH=30h,INT 21/AX=3306h"DOS"
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
--------------------------------------------------------------------------------
Unique ID: 2D--20
Category: U resident utilities
Flag: n/a
--------------------------------------------------------------------------------

INT 2D - lDOS TSRs - GET CTRL0
AH = AMIS multiplex number
AL = 20h
Return: AL = size of returned ctrl0
DX:BX -> control data
Notes: ctrl0 has different uses among the TSRs.
TSR example: ctrl0 is 1 byte
no-op, bits 6 and 7 can be toggled from command line
RxANSI: ctrl0 is 1 byte
bit 7: enable processing ANSI sequences
bit 6: enable processing LESS sequences, cleared by
this call if built without LESS support
bit 5: (internal) last character was a digit
bit 0 to 4: unused
lClock: ctrl0 is 1 byte
bit 7: enable writing clock in INT 1C handler
bits 0 to 6: unsupported, cleared by this call
SEEKEXT: ctrl0 is 1 byte
bit 7: state short (handle INT 21/AH=42h)
bit 6: state long (handle INT 21/AX=7142h)
bit 5: state info (handle INT 21/AX=71A6h)
bits 0 to 4: unsupported, cleared by this call
KEEPH0OK: ctrl0 is 4 words
WORD 00h: AMIS interrupt list offset
WORD 02h: AMIS interrupt list length(?)
WORD 04h: "heapfree_offset", offset of first
free block? >= FFFCh if none free?
WORD 06h: placeholder size??? always 0?
FDAPM IDLEDPMS: ctrl0 is 7 bytes
BYTE 00h: enable/disable in bit 7, others unsupported
and cleared by this call. if this call is
run with bit 7 clear, it wakes the screen
WORD 01h: ".count": count of idle ticks
WORD 03h: ".limit": ticks until screen is switched off,
initialised from command line times 1092
BYTE 05h: "idle": 1 if screen is already off
BYTE 07h: "what": 1 to sleep, 0 to wake up
EIDL: ctrl0 is 1 byte
bit 7: state
bits 0 to 6: unsupported, not cleared
INTERCEP/INTERC3: ctrl0 is 1 byte
bit 7: state of INTERCEP, enable recording
bit 6: record AMIS calls
bits 0 to 5: unsupported, cleared by this call
D2FCBFIX: this call is not supported
SRDISK: ctrl0 is 1 DWORD, 16:16 far pointer -> first driver
FDAPM: this call is not supported
FreeDOS share: this call is not supported
lDebug: this call is not supported
Loader: this call is not supported
lDOS kernel: this call is not supported
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
--------------------------------------------------------------------------------
Unique ID: 2D--21
Category: U resident utilities
Flag: n/a
--------------------------------------------------------------------------------

INT 2D - lDOS TSRs - GET CTRL1
AH = AMIS multiplex number
AL = 21h
Return: AL = size of returned ctrl1
DX:BX -> control data
Notes: ctrl1 has different uses among the TSRs.
lClock: ctrl1 is 1 DWORD, 16:16 far pointer -> memory to write
FreeDOS share: ctrl1 is 3 bytes
WORD 00h: ".offset", in DOSDATA -> share_installed flag
BYTE 02h: ".status", = 1 if indeterminate, = 3 if patch
of kernel not needed, 2 = patch needed
D2FCBFIX: ctrl1 is 1 DWORD,
16:16 far pointer -> where to undo patch (in dosemu2
ROM-BIOS segment F000h). installation patches in an
immediate far jump at this point.
TSR example: this call is not supported
RxANSI: this call is not supported
SEEKEXT: this call is not supported
KEEPH0OK: this call is not supported
FDAPM IDLEDPMS: this call is not supported
EIDL: this call is not supported
INTERCEP/INTERC3: this call is not supported
SRDISK: this call is not supported
FDAPM: this call is not supported
lDebug: this call is not supported
Loader: this call is not supported
lDOS kernel: this call is not supported
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
--------------------------------------------------------------------------------
Unique ID: 2D--22
Category: U resident utilities
Flag: n/a
--------------------------------------------------------------------------------

INT 2D - lDOS TSRs - GET CTRL2
AH = AMIS multiplex number
AL = 22h
Return: AL = size of returned ctrl2
DX:BX -> control data
Notes: ctrl2 has different uses among the TSRs.
FreeDOS share: ctrl2 is 4 WORDs
WORD 00h: file_table_size
WORD 02h: file_table_free
WORD 04h: lock_table_size
WORD 06h: lock_table_free
older revisions of FreeDOS share may return AL = FFh,
BX = file table size
CX = file table free
SI = lock table size
DX = lock table free
TSR example: this call is not supported
RxANSI: this call is not supported
lClock: this call is not supported
SEEKEXT: this call is not supported
KEEPH0OK: this call is not supported
FDAPM IDLEDPMS: this call is not supported
EIDL: this call is not supported
INTERCEP/INTERC3: this call is not supported
D2FCBFIX: this call is not supported
SRDISK: this call is not supported
FDAPM: this call is not supported
lDebug: this call is not supported
Loader: this call is not supported
lDOS kernel: this call is not supported
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
--------------------------------------------------------------------------------
Unique ID: 2D--30
Category: U resident utilities
Flag: n/a
--------------------------------------------------------------------------------

INT 2D - lDOS IDLEDPMS - INDICATE NOT IDLE
AH = AMIS multiplex number for IDLEDPMS
AL = 30h
Return: AL = FFh to indicate suppported,
screen enabled if it was idle, and idle counter reset
AL != FFh if not supported
Notes: the lDOS TSR version of IDLEDPMS is part of a fork of the
FreeDOS power savings utility, FDAPM. IDLEDPMS blanks the
screen after a certain timeout without INT 09 or INT 74
being called (IRQs for keyboard input and PS/2 mouse
input respectively).