📄 interrupb.txt
字号:
video memory directly; check 386 memory manager for VDS support.
The WD7000XTAT works with programmed IO and does not have this
limitation.
SeeAlso: INT 21/AX=4402h"ASPI",INT 2F/AX=7F01h
Bitfields for SDLP SCSI addressing:
Bit(s) Description (Table 00230)
2-0 SCSI Target LUN (logical unit number)
5-3 SCSI Target ID
7 write flag, set for write operations, clear otherwise
--------T-11FFFECXFFFE-----------------------
INT 11 - BACK&FORTH (before v1.62) API
AX = FFFEh
CX = FFFEh
BX = function
00h installation check
Return: AX = installation state
0001h BNFHIGH and BNFLOW both loaded
0003h only BNFHIGH loaded
else neither loaded
01h ???
Return: DX:AX -> ???
02h ???
03h ???
04h ???
05h ??? switches current PSP segment and stack if BNFLOW has not
yet announced itself installed
06h ???
Return: AX = ???
SeeAlso: INT 12/AX=FFFEh
Index: installation check;BACK&FORTH
--------B-12---------------------------------
INT 12 - BIOS - GET MEMORY SIZE
Return: AX = kilobytes of contiguous memory starting at absolute address 00000h
Note: this call returns the contents of the word at 0040h:0013h; in PC and
XT, this value is set from the switches on the motherboard
SeeAlso: INT 11"BIOS",INT 2F/AX=4A06h,INT 4C"Tandy 2000",MEM 0040h:0013h
--------C-12---------------------------------
INT 12 - CPU-generated (Pentium +) - MACHINE CHECK EXCEPTION
Notes: Intel documents this interrupt as CPU model-dependent
for current Pentium processors, the reason for the machine check
exception may be read from model-specific registers 00h and 01h
(described, for example, in Christian Ludloff's 4P package)
for Pentium Pro/II processors, the reason may be read from the
MCG_STATUS MSR (see MSR 0000017Ah)
this exception is enabled by bit 6 of CR4
SeeAlso: INT 11"CPU",MSR 00000000h,MSR 00000001h,MSR 0000017Ah
--------K-12----CX1806-----------------------
INT 12 - KEYBUI v2.0+ - INSTALLATION CHECK
CX = 1806h
Return: AX = kilobytes of contiguous memory starting at absolute address 00000h
CX = 1960h if installed
Program: KEYBUI is a resident keyboard driver by Johan Zwiekhorst which allows
accented characters and box drawing on standard QWERTY keyboards; it
also provides break-to-DOS and screen blanking capabilities
SeeAlso: INT 14/AX=AA01h
Index: screen saver;KEYBUI
--------d-12----CX1807-----------------------
INT 12 - PARKER v2.0+ - INSTALLATION CHECK
CX = 1807h
Return: AX = kilobytes of contiguous memory starting at absolute address 00000h
CX = 1961h if installed
Program: PARKER is an optionally-resident hard disk parking program by Johan
Zwiekhorst
--------G-1205D7BX05D7-----------------------
INT 12 U - Borland C++ IDE - INSTALLATION CHECK
AX = 05D7h (1495d)
BX = 05D7h
Note: the BC++ IDE will call INT 11/AX=05D7h/BX=0088h if it is loaded
SeeAlso: INT 11/AX=05D7h
--------v-124350BX4920-----------------------
INT 12 C - CPI-standard virus - "FRIEND" CHECK
AX = 4350h
BX = 4920h
CX = AB46h
DX = 554Eh
Return: if friendly (not to be infected)
CX:DX -> ASCIZ identity code (changes yearly)
SeeAlso: INT 13/AX=EC00h"VIRUS",INT 13/AX=5001h,INT 21/AX=0B56h
--------T-12FFFECXFFFE-----------------------
INT 12 - Back&Forth v1.62+ - API
AX = FFFEh
CX = FFFEh
BX = function
00h installation check
Return: AX = 0001h installed
else not loaded
01h (reserved)
02h build program ID list (shareware Back&Forth)
ES:DI -> buffer of at least 100 bytes, to be filled with words
Return: AX = number of programs defined
ES:DI buffer filled with AX words
02h get memory statistics (Back&Forth Professional)
Return: AX = available swap memory, KBytes
BX = maximum task size, KBytes
DX = fixed overhead per task, excluding video/macro
storage
03h switch to specified task (task need not be open yet)
DX = two-letter program ID
Return: AX = status
0000h if task undefined
0001h task switch will occur when safe
04h (reserved)
05h (reserved)
06h get version (documented only for Back&Forth Professional)
Return: AX = version * 100 (v1.71 = 00ABh)
07h spawn program (Back&Forth Professional only???)
ES:DI -> BF_SPAWN record (see #00232)
Return: AX = status
0000h if no task handles free
0001h spawn will occur when safe
08h get open tasks (documented only for Back&Forth Professional)
ES:DI -> task info buffer (see #00231,#00233)
Return: AX = number of open tasks (max 20)
Note: the supplied buffer must be large enough to hold 21
task entries
09h (reserved)
---Back&Forth Professional---
0Ah get active clipboard filename
Return: DX:AX -> ASCIZ clipboard filename
0Bh get active task number
AX = active task number (00h-13h)
BX = number of tasks allocated
DX = maximum number of tasks
0Ch (reserved)
0Dh (reserved)
0Eh (reserved)
0Fh stuff string into keyboard buffer
ES:DI -> ASCIZ string to be stuffed
Return: nothing
10h check if in graphics mode
Return: AX = state
0000h color text mode
0004h mono text mode
FFFFh graphics mode
11h get Back&Forth Professional user number
Return: AX = user number (0000h-00FFh)
12h switch task by task number
DX = task number
Return: AX = status
0000h attempted to switch to active task
0001h task switch will occur when safe
FFFFh invalid task number
13h delete (kill) task
DX = task number
Return: AX = status
0000h attempted to delete the active task
0001h successfully deleted
FFFFh invalid task number
Note: the active task number will change if the deleted task
was lower in the task list than the active task
14h get next available task handle
Return: AX = next available task handle
FFFFh if task table is full
Program: Back & Forth is a task switcher by Progressive Solutions, Inc.
SeeAlso: INT 11/AX=FFFEh
Index: installation check;BACK&FORTH
Format of Back&Forth task info buffer:
Offset Size Description (Table 00231)
00h 21 BYTEs ASCIZ task name
15h BYTE hotkey shift state (as for INT 16/AH=02h)
16h WORD hotkey scan code (see also #00006)
18h WORD program ID
Index: hotkeys;Back&Forth
SeeAlso: #00232,#00233
Format of Back&Forth Professional BF_SPAWN record:
Offset Size Description (Table 00232)
00h 21 BYTEs task description
15h BYTE flag: disable hotkeys
16h WORD environment size in bytes
18h BYTE hotkey shift flags
19h WORD hotkey scancode
1Bh WORD maximum number of EMS pages
1Dh WORD required memory in KBytes
1Fh 3 BYTEs DESQview-style two-letter program ID
22h 13 BYTEs base name of program to be run (no path or extension)
2Fh 66 BYTEs directory from which to start program
71h 66 BYTEs initial current directory for program
SeeAlso: #00231,#00233
Format of Back&Forth Professional BF_TASK record:
Offset Size Description (Table 00233)
00h DWORD Unix-style task start time (seconds since 1970/1/1)
04h 21 BYTEs task description
19h DWORD elapsed time in task (seconds)
1Dh WORD task ID
1Fh BYTE task hotkey keyboard flags
20h WORD task hotkey scan code (see also #00006)
22h DWORD time task was suspended/exited
26h WORD task handle
SeeAlso: #00231,#00232
--------B-1300-------------------------------
INT 13 - DISK - RESET DISK SYSTEM
AH = 00h
DL = drive (if bit 7 is set both hard disks and floppy disks reset)
Return: AH = status (see #00234)
CF clear if successful (returned AH=00h)
CF set on error
Note: forces controller to recalibrate drive heads (seek to track 0)
for PS/2 35SX, 35LS, 40SX and L40SX, as well as many other systems,
both the master drive and the slave drive respond to the Reset
function that is issued to either drive
SeeAlso: AH=0Dh,AH=11h,INT 21/AH=0Dh,INT 4D/AH=00h"TI Professional"
SeeAlso: INT 56"Tandy 2000",MEM 0040h:003Eh
--------B-1301-------------------------------
INT 13 - DISK - GET STATUS OF LAST OPERATION
AH = 01h
DL = drive (bit 7 set for hard disk)
Return: CF clear if successful (returned status 00h)
CF set on error
AH = status of previous operation (see #00234)
Note: some BIOSes return the status in AL; the PS/2 Model 30/286 returns the
status in both AH and AL
SeeAlso: AH=00h,INT 4D/AH=01h,MEM 0040h:0041h,MEM 0040h:0074h
(Table 00234)
Values for disk operation status:
00h successful completion
01h invalid function in AH or invalid parameter
02h address mark not found
03h disk write-protected
04h sector not found/read error
05h reset failed (hard disk)
05h data did not verify correctly (TI Professional PC)
06h disk changed (floppy)
07h drive parameter activity failed (hard disk)
08h DMA overrun
09h data boundary error (attempted DMA across 64K boundary or >80h sectors)
0Ah bad sector detected (hard disk)
0Bh bad track detected (hard disk)
0Ch unsupported track or invalid media
0Dh invalid number of sectors on format (PS/2 hard disk)
0Eh control data address mark detected (hard disk)
0Fh DMA arbitration level out of range (hard disk)
10h uncorrectable CRC or ECC error on read
11h data ECC corrected (hard disk)
20h controller failure
31h no media in drive (IBM/MS INT 13 extensions)
32h incorrect drive type stored in CMOS (Compaq)
40h seek failed
80h timeout (not ready)
AAh drive not ready (hard disk)
B0h volume not locked in drive (INT 13 extensions)
B1h volume locked in drive (INT 13 extensions)
B2h volume not removable (INT 13 extensions)
B3h volume in use (INT 13 extensions)
B4h lock count exceeded (INT 13 extensions)
B5h valid eject request failed (INT 13 extensions)
B6h volume present but read protected (INT 13 extensions)
BBh undefined error (hard disk)
CCh write fault (hard disk)
E0h status register error (hard disk)
FFh sense operation failed (hard disk)
SeeAlso: #M0022
--------B-1302-------------------------------
INT 13 - DISK - READ SECTOR(S) INTO MEMORY
AH = 02h
AL = number of sectors to read (must be nonzero)
CH = low eight bits of cylinder number
CL = sector number 1-63 (bits 0-5)
high two bits of cylinder (bits 6-7, hard disk only)
DH = head number
DL = drive number (bit 7 set for hard disk)
ES:BX -> data buffer
Return: CF set on error
if AH = 11h (corrected ECC error), AL = burst length
CF clear if successful
AH = status (see #00234)
AL = number of sectors transferred (only valid if CF set for some
BIOSes)
Notes: errors on a floppy may be due to the motor failing to spin up quickly
enough; the read should be retried at least three times, resetting
the disk with AH=00h between attempts
most BIOSes support "multitrack" reads, where the value in AL
exceeds the number of sectors remaining on the track, in which
case any additional sectors are read beginning at sector 1 on
the following head in the same cylinder; the MSDOS CONFIG.SYS command
MULTITRACK (or the Novell DOS DEBLOCK=) can be used to force DOS to
split disk accesses which would wrap across a track boundary into two
separate calls
the IBM AT BIOS and many other BIOSes use only the low four bits of
DH (head number) since the WD-1003 controller which is the standard
AT controller (and the controller that IDE emulates) only supports
16 heads
AWARD AT BIOS and AMI 386sx BIOS have been extended to handle more
than 1024 cylinders by placing bits 10 and 11 of the cylinder number
into bits 6 and 7 of DH
under Windows95, a volume must be locked (see INT 21/AX=440Dh/CX=084Bh)
in order to perform direct accesses such as INT 13h reads and writes
all versions of MS-DOS (including MS-DOS 7 [Windows 95]) have a bug
which prevents booting on hard disks with 256 heads (FFh), so many
modern BIOSes provide mappings with at most 255 (FEh) heads
some cache drivers flush their buffers when detecting that DOS is
bypassed by directly issuing INT 13h from applications. A dummy
read can be used as one of several methods to force cache
flushing for unknown caches (e.g. before rebooting).
BUGS: When reading from floppies, some AMI BIOSes (around 1990-1991) trash
the byte following the data buffer, if it is not arranged to an even
memory boundary. A workaround is to either make the buffer word
aligned (which may also help to speed up things), or to add a dummy
byte after the buffer.
MS-DOS may leave interrupts disabled on return from this function.
Apparently some BIOSes or intercepting resident software have bugs
that may destroy DX on return or not properly set the Carry flag.
At least some Microsoft software frames calls to this function with
PUSH DX, STC, INT 13h, STI, POP DX.
on the original IBM AT BIOS (1984/01/10) this function does not disable
interrupts for harddisks (DL >= 80h). On these machines the MS-DOS/
PC DOS IO.SYS/IBMBIO.COM installs a special filter to bypass the
buggy code in the ROM (see CALL F000h:211Eh)
SeeAlso: AH=03h,AH=0Ah,AH=06h"V10DISK.SYS",AH=21h"PS/1",AH=42h"IBM"
SeeAlso: INT 21/AX=440Dh/CX=084Bh,INT 4D/AH=02h
--------B-1303-------------------------------
INT 13 - DISK - WRITE DISK SECTOR(S)
AH = 03h
AL = number of sectors to write (must be nonzero)
CH = low eight bits of cylinder number
CL = sector number 1-63 (bits 0-5)
high two bits of cylinder (bits 6-7, hard disk only)
DH = head number
DL = drive number (bit 7 set for hard disk)
ES:BX -> data buffer
Return: CF set on error
CF clear if successful
AH = status (see #00234)
AL = number of sectors transferred
(only valid if CF set for some BIOSes)
Notes: errors on a floppy may be due to the motor failing to spin up quickly
enough; the write should be retried at least three times, resetting
the disk with AH=00h between attempts
most BIOSes support "multitrack" writes, where the value in AL
exceeds the number of sectors remaining on the track, in which
case any additional sectors are written beginning at sector 1 on
the following head in the same cylinder; the CONFIG.SYS command
MULTITRACK can be used to force DOS to split disk accesses which
would wrap across a track boundary into two separate calls
the IBM AT BIOS and many other BIOSes use only the low four bits of
DH (head number) since the WD-1003 controller which is the standard
AT controller (and the controller that IDE emulates) only supports
16 heads
AWARD AT BIOS and AMI 386sx BIOS have been extended to handle more
than 1024 cylinders by placing bits 10 and 11 of the cylinder number
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -