📄 interrup.g
字号:
Block (see #01454) on the stack and the caller must clean up the
stack
SeeAlso: AX=440Ch"ASPITAPE",INT 11/AH=FFh"WD7000"
Format of ASPI IOCTL result:
Offset Size Description (Table 01452)
00h DWORD function address
04h BYTE number of SCSI host adapters supported by host manager
(Table 01453)
Values for ASPI request number:
00h "HA_INQ" host adapter inquiry / extended host adapter inquiry
01h "GET_TYPE" get device type
02h "EXEC_SIO" execute SCSI I/O
03h "ABORT_SRB" abort SRB
04h "RESET_DEV" reset SCSI device
05h "SET_HAPRMS" set host adapter parameters
06h get disk drive information
Format of SCSI Request Block (64 bytes):
Offset Size Description (Table 01454)
00h BYTE request number (see #01453)
01h BYTE request status (see #01455)
02h BYTE host adapter ID
03h BYTE request flags (see #01456)
04h DWORD reserved (0)
---request 00h---
08h BYTE (ret) number of host adapters
09h BYTE (ret) target adapter ID
0Ah 16 BYTEs (ret) SCSI manager ID
1Ah 16 BYTEs (ret) host adapter ID
2Ah 16 BYTEs (ret) host adapter-unique parameters
---extended request 00h---
04h 2 BYTEs (call) extended request signature 55h AAh
(ret) if extended request supported, reply AAh 55h
06h WORD (call) length of extended buffer at offset 3Ah
(ret) number of bytes returned in extended buffer
08h BYTE (ret) number of host adapters
09h BYTE (ret) target adapter ID
0Ah 16 BYTEs (ret) SCSI manager ID
1Ah 16 BYTEs (ret) host adapter ID
2Ah 16 BYTEs (ret) host adapter-unique parameters
3Ah N BYTEs extended buffer
3Ah WORD features (see #01457)
3Ch WORD maximum scatter/gather list length
3Eh DWORD maximum SCIS data transfer size (0 = unlimited)
---request 01h---
08h BYTE target ID
09h BYTE logical unit number
0Ah BYTE (ret) device type (see #01460)
---request 02h---
08h BYTE target ID
09h BYTE logical unit number
0Ah DWORD data allocation length
(ret) residual byte length (if supported and requested)
0Eh BYTE sense allocation length
0Fh DWORD data buffer pointer
13h DWORD next request pointer (for linking)
17h BYTE CDB length
18h BYTE (ret) host adapter status (see #01454)
19h BYTE (ret) target status (see #01459)
1Ah DWORD post routine address (see #01466)
1Eh WORD real mode Post DS
20h DWORD SRB pointer
24h WORD reserved
26h DWORD SRB physical address
2Ah 22 BYTEs SCSIMGR$ workspace
40h N BYTEs CCB, including sense data (20-24 bytes)
---request 03h---
08h DWORD address of SRB to abort
---request 04h---
08h BYTE target ID
09h BYTE logical unit number
0Ah 14 BYTEs reserved
18h BYTE (ret) host adapter status (see #01458)
19h BYTE (ret) target status (see #01459)
1Ah DWORD post routine address
1Eh 34 BYTEs workspace
---request 05h---
08h 16 BYTEs host adapter-unique parameters
---request 06h---
08h BYTE target ID
09h BYTE logical unit number
0Ah BYTE disk drive flags (see #01461)
0Bh BYTE INT 13h drive number
0Ch BYTE preferred head number translation
0Dh BYTE preferred sector size translation
0Eh 10 BYTEs reserved
SeeAlso: #01462
(Table 01455)
Values for ASPI request status:
00h not done yet
01h completed successfully
02h aborted by host
04h SCSI I/O error
80h invalid
81h no adapter
82h no device attached
else status
SeeAlso: #01454
Bitfields for ASPI request flags:
Bit(s) Description (Table 01456)
0 posting enabled
1 linking enabled
2 residual byte length reported in Data Allocation Length field
3 transfer from SCSI target to host
4 transfer from host to SCSI target
5 scatter/gather
7-6 reserved
Note: no data is transferred if both bits 3 and 4 are set; if neither is
set, the direction is determined by the SCSI command
SeeAlso: #01454
Bitfields for ASPI extended features:
Bit(s) Description (Table 01457)
0 scatter/gather supported
1 residual byte length reported
2 Wide SCSI 16 host adapter
3 Wide SCSI 32 host adapter
15-4 reserved
SeeAlso: #01454
(Table 01458)
Values for host adapter status:
00h no error detected
11h select timeout
12h data overrun
13h bus error
14h bus failure
(Table 01459)
Values for target status:
00h no status
02h sense data stored in SRB
08h target busy
18h reservation error
(Table 01460)
Values for device type:
00h disk drive
01h tape drive (streamer)
02h printer
03h processor
04h WORM drive
05h CD-ROM drive
06h scanner
07h optical drive
08h autochanger
09h communications device
(Table 01461)
Values for disk drive flags:
00h no INT 13 access
01h INT 13 with DOS access
02h INT 13 without DOS access
03h invalid flags
Format of CCB:
Offset Size Description (Table 01462)
00h BYTE command code (see #01463)
01h BYTE flags
bits 4-0: vary by function
bits 7-5: logical unit number
02h BYTE "adr_1"
03h BYTE "adr_0"
04h BYTE length
05h BYTE control
...
06h/0Ah 14 BYTEs buffer for sense data (see #01464)
SeeAlso: #01454
(Table 01463)
Values for CCB command code:
00h test unit ready
01h rewind
03h request sense data
05h get block size limits
08h Group 0 read
0Ah Group 0 write
10h write file marks
11h SCSI Space (set position?)
12h SCSI Inquire
15h set mode information
16h reserve SCSI device
17h release SCSI device
19h erase
1Ah request mode information
1Bh load/unload media
1Dh request target self-check
24h set window parameters
25h get window parameters
28h Group 1 read
2Ah Group 1 write
31h document feeder control
34h get scan data status
---vendor-specific commands---
D3h get document feeder status
D4h set document feeder mode
Format of sense data:
Offset Size Description (Table 01464)
00h BYTE error code (bit 7 set if valid)
01h BYTE segment number
02h BYTE sense key
bit 6: EOM
bit 5: ILI
bits 0-3: sense key (see #01465)
03h 4 BYTEs information bytes
07h BYTE additional sense length (0Ah)
08h 4 BYTEs command-specific information
0Ch BYTE additional sense code
0Dh BYTE additional sense code qualifier
0Eh BYTE field replaceable unit code
0Fh 3 BYTEs sense key specific bytes
(Table 01465)
Values for sense key:
00h no sense data
02h SCSI unit not ready
03h media error
04h unrecoverable hardware error
05h illegal parameter in CDB
06h target has been reset
0Bh target aborted command
(Table 01466)
Values APSI post function is called with:
STACK: DWORD -> SRB (see #01454) which completed
interrupts disabled
Return: EBP, EBX, ESI, EDI must be preserved
interrupts disabled
Note: the post function may issue any APSI function except an abort; it
should complete as quickly as possible
--------m-214402-----------------------------
INT 21 U - Qualitas 386MAX v6.00+ - IOCTL INPUT - GET STATE
AX = 4402h
BX = file handle for device "386MAX$$"
CX = number of bytes to read
DS:DX -> BYTE 03h followed by 386MAX state buffer (see #01467)
Return: CF clear if successful
buffer at DS:DX+1 filled
AX = number of bytes actually copied
CF set on error
AX = error code (01h,05h,06h,0Dh) (see #01680 at AH=59h/BX=0000h)
Notes: if the value given in CX is less than the size of the state record
(5Ah for v6.01, 66h for v7.00), only a partial state record will be
returned
the state is 40h bytes for 386MAX (actually ASTEMM) v2.20 ("386MAX$$"
did not exist yet, use "QMMXXXX0" and then "EMMXXXX0" instead) and
56h bytes for v5.11.
to invoke 386MAX API functions, push DX onto the stack, load DX with
the word at offset 25h in the returned state, load all other
registers as needed for the desired function, and execute an
OUT DX,AL or OUT DX,AX; DX will be set to the pushed value on return
if it is not otherwise modified by the API function. For safety,
in case a function is not supported or 386MAX is not present, SP
should be saved and restored around the API call.
Windows 3.1 Standard mode, LAN Manager, and Windows for Workgroups all
use the 386MAX API; LAN Manager and Windows for Workgroups reportedly
make some calls incorrectly
SeeAlso: AX=4403h/SF=03h"386MAX",INT 67/AH=3Fh
Format of 386MAX v6.01+ state:
Offset Size Description (Table 01467)
-1 BYTE (call) 03h
00h 6 BYTEs signature "386MAX"
06h 4 BYTEs version string "N;NN" or "N.NN" (i.e. "6;01" for v6.01)
(';' by default; apparently changed to a period when 386MAX
has linked high RAM into DOS's memory chain)
0Ah WORD segment of low-memory portion of 386MAX.SYS
0Ch 2 BYTEs ???
0Eh WORD segment of ??? memory block or 0000h
10h WORD bit flags 1 (see #01468)
12h WORD starting address of video memory in KB
14h 2 BYTEs ???
16h WORD total high DOS memory in KB
18h 2 BYTEs ???
1Ah WORD available shared memory in KB
1Ch WORD KBytes extended memory used by 386MAX
1Eh 2 BYTEs ???
20h WORD total extended memory in KB
22h WORD IO port to write (OUT DX,AL) to invoke 386MAX INT 15 functions
24h WORD IO port to write (OUT DX,AL) to invoke 386MAX API functions
(see #01481)
26h WORD ??? (depends on DOS version)
28h WORD size of ??? in paragraphs
2Ah DWORD machine type (see #01476)
2Eh DWORD -> first DOS memory control block
32h WORD system configuration flags (see #01469)
34h WORD debugging flags 1 (see #01470)
36h WORD debugging flags 2 (see #01471)
38h 2 BYTEs ???
3Ah WORD segment of first MCB in high memory chain
3Ch WORD feature flags 1 (see #01473)
3Eh WORD feature flags 2 (see #01474)
40h WORD feature flags 3 (see #01475)
42h WORD segment of first 386MAX control block??? (see #01477)
44h WORD amount of memory to report available on INT 15/AH=88h
46h 4 BYTEs ???
4Ah WORD number of K at start of address space swapped with fast
extended memory (SWAP= parameter)
4Ch 2 BYTEs ???
4Eh WORD segment address of ???
50h WORD debugging flags 3 (see #01472)
52h DWORD old INT 21h
56h DWORD pointer to 386MAX's EMS (INT 67h) handler
---386MAX v7.00---
5Ah DWORD KB of extended memory managed by 386MAX
5Eh DWORD bytes of extended memory (EXT= parameter)
62h 4 BYTEs ???
Bitfields for 386MAX bit flags 1:
Bit(s) Description (Table 01468)
1 ???
2 allow A20 to be enabled/disabled???
3 ??? (cleared by calling INT 67 functions or starting MSWindows)
4 high RAM present???
5 386MAX in AUTO mode
6 386MAX enabled
7 386MAX is providing EMS services
8 ??? (affects API function 08h)
9 A20 gate closed (A20 disabled) (see INT 15/AX=2402h)
10 Weitek support enabled
11 ???
12 ROMs not shadowed???
13 QPMS has been used
14 ???
15 ???
Bitfields for 386MAX system configuration flags:
Bit(s) Description (Table 01469)
1 ROM compressed???
3 ???
5 386MAX loaded into high memory
6 Microchannel bus
7 Weitek math coprocessor detected
9 ??? (also generates INT 01 on ??? and INT 03 on ???)
11 PC/XT (thus only single 8259 interrupt controller present, DMA only
in 1st megabyte, etc)
13 LMLTOP= specified
14 enable A20 control???
15 ???
Bitfields for 386MAX debugging flags 1:
Bit(s) Description (Table 01470)
0 DEBUG=LED
1 DEBUG=X67
2 DEBUG=INV
3 DEBUG=EMSPTED
4 DEBUG=JMP
5 DEBUG=CALL
6 DEBUG=HLT
7 DEBUG=PMR
8 DEBUG=CR3
9 DEBUG=CAPS or DEBUG=INT
10 DEBUG=RC
11 DEBUG=ROM
12 DEBUG=XM
13 DEBUG=SOR
14 DEBUG=XR
15 DEBUG=EMSERR (generate INT 01 on returning error from EMS call)
Bitfields for 386MAX debugging flags 2:
Bit(s) Description (Table 01471)
0 DEBUG=ROMSWAP
1 DEBUG=UNSHADOWROM
2 DEBUG=COMPROM
3 DEBUG=DPMIPHYS
4 DEBUG=ALLROM
5 DEBUG=VMS
6 DEBUG=XMS (generate INT 01 on XMS calls)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -