mirror of https://github.com/tongzx/nt5src
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
70 lines
2.6 KiB
70 lines
2.6 KiB
BREAK <Int 2A Definitions>
|
|
|
|
;** Int 2A functions
|
|
;
|
|
; Int 2A is an interface to the network code; it's also overloaded
|
|
; as a critical section handler since critical sections
|
|
; were originally created to support the net.
|
|
|
|
|
|
;** This table was created by examining the source and may not be
|
|
; complete or completely accurate - JGL
|
|
;
|
|
; M010 MD 8/31/90 - Added definition for AH = 5
|
|
|
|
; (ah) = 0 installation check
|
|
; (returns ah !=0 if installed)
|
|
; (ah) = 1 cooked net bios call
|
|
; (ah) = 3 query drive shared
|
|
; (ds:si) = "n:" asciz string
|
|
; (ah) = 4 net bios
|
|
; (al) = 0 cooked net bios call
|
|
; (al) = 1 raw net bios call
|
|
; (al) = 2 ???
|
|
;
|
|
; (ah) = 5 Get Net Adaptor Resources. CX returns the number of
|
|
; NCBs available/outstanding. DX returns the number of
|
|
; sessions. Supposedly, this is documented in an old
|
|
; IBM PC-LAN reference. Lotus Notes uses it. DOS LAN
|
|
; Manager 2.0 Enhanced responds to it. But it should
|
|
; not be used, as it is a hack, only to get Lotus
|
|
; Notes running.
|
|
;
|
|
; (ah) = 80h enter critical section
|
|
; (ah) = 81h leave critical section
|
|
; (ah) = 82h free all critical sections (Leave-all)
|
|
; (ah) = 84h entering idle loop (don't understand how this works)
|
|
|
|
|
|
Break <Critical sections>
|
|
|
|
|
|
;** Critical section definitions
|
|
;
|
|
; Although DOS is not designed to be reentrant there are some hacks
|
|
; which various programs use to make it so, in a limited fashion.
|
|
; Both WIN386 and some servers block copy a section of the DOS data
|
|
; area so that DOS can be reentered on behalf of another thread/program.
|
|
; DOS's global data structures, such as the memory arena, are not
|
|
; in this area, so critical section indicators are used to protect
|
|
; those areas. DOS flags a critical section by issuing an INT_IBM
|
|
; (int 2Ah) at each critical section entry and exit. Some clients
|
|
; (such as WIN386) just don't "context switch" the DOS when one
|
|
; of these is in effect, others, such as the IBM server, go ahead
|
|
; and reenter the DOS and if they get an int 2A to reenter the same
|
|
; critical section they then switch away from that second thread and
|
|
; let the first one finish and exit the section.
|
|
;
|
|
; These below are subject to leave-all sections
|
|
|
|
critDisk EQU 1 ; Disk I/O critical section
|
|
critShare EQU 1 ; Sharer I/O critical section
|
|
critMem EQU 1 ; memory maintenance critical section
|
|
critSFT EQU 1 ; sft table allocation
|
|
critDevice EQU 2 ; Device I/O critical section
|
|
critNet EQU 5 ; network critical section
|
|
critIFS EQU 6 ; ifsfunc critical section
|
|
|
|
; These below are not subject to leave-all sections
|
|
|
|
critASSIGN EQU 8 ; Assign has munged a system call
|