BREAK ;** 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 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