NETWORK.A86
上传用户:xiaogehua
上传日期:2007-01-08
资源大小:1183k
文件大小:4k
源码类别:

操作系统开发

开发平台:

Asm

  1. ;    File              : $NETWORK.A86$
  2. ;
  3. ;    Description       :
  4. ;
  5. ;    Original Author   : DIGITAL RESEARCH
  6. ;
  7. ;    Last Edited By    : $CALDERA$
  8. ;
  9. ;-----------------------------------------------------------------------;
  10. ;    Copyright Work of Caldera, Inc. All Rights Reserved.
  11. ;      
  12. ;    THIS WORK IS A COPYRIGHT WORK AND CONTAINS CONFIDENTIAL,
  13. ;    PROPRIETARY AND TRADE SECRET INFORMATION OF CALDERA, INC.
  14. ;    ACCESS TO THIS WORK IS RESTRICTED TO (I) CALDERA, INC. EMPLOYEES
  15. ;    WHO HAVE A NEED TO KNOW TO PERFORM TASKS WITHIN THE SCOPE OF
  16. ;    THEIR ASSIGNMENTS AND (II) ENTITIES OTHER THAN CALDERA, INC. WHO
  17. ;    HAVE ACCEPTED THE CALDERA OPENDOS SOURCE LICENSE OR OTHER CALDERA LICENSE
  18. ;    AGREEMENTS. EXCEPT UNDER THE EXPRESS TERMS OF THE CALDERA LICENSE
  19. ;    AGREEMENT NO PART OF THIS WORK MAY BE USED, PRACTICED, PERFORMED,
  20. ;    COPIED, DISTRIBUTED, REVISED, MODIFIED, TRANSLATED, ABRIDGED,
  21. ;    CONDENSED, EXPANDED, COLLECTED, COMPILED, LINKED, RECAST,
  22. ;    TRANSFORMED OR ADAPTED WITHOUT THE PRIOR WRITTEN CONSENT OF
  23. ;    CALDERA, INC. ANY USE OR EXPLOITATION OF THIS WORK WITHOUT
  24. ;    AUTHORIZATION COULD SUBJECT THE PERPETRATOR TO CRIMINAL AND
  25. ;    CIVIL LIABILITY.
  26. ;-----------------------------------------------------------------------;
  27. ;
  28. ;    *** Current Edit History ***
  29. ;    *** End of Current Edit History ***
  30. ;
  31. ;    $Log$
  32. ;    ENDLOG
  33. ;
  34. ;   DOS Network Function Calls
  35. include pcmode.equ
  36. include i:mserror.equ
  37. include i:redir.equ
  38. include i:doshndl.def
  39. PCM_CODE CSEG BYTE
  40. extrn reload_ES:near
  41. extrn return_AX_CLC:near
  42. extrn return_CX:near
  43. extrn error_exit:near
  44. extrn get_ldt_raw:near
  45. ; *****************************
  46. ; ***    DOS Function 5E    ***
  47. ; ***    Get Machine Name   ***
  48. ; *****************************
  49. ;
  50. Public func5E
  51. func5E:
  52. cmp al,1 ! jb f5E00 ; Get Machine Name Sub-Function
  53.    je f5E01 ; Set Machine Name Sub-Function
  54. mov ax,I2F_REDIR_5E ; magic int 2F number
  55. jmp func5F_common ; use common routine
  56. ;
  57. ; Get the current Machine Name
  58. ;
  59. f5E00:
  60. mov di,dx ; Copy the 15 Byte Network Name
  61. mov si,offset net_name
  62. mov cx,16/2
  63. rep movsw
  64. ; mov ch,name_num ; 00 -> Undefined Name
  65. ; mov cl,netbios ; 00 -> Name Number
  66. mov cx,word ptr netbios
  67. call return_CX
  68. f5E_success:
  69. xor ax,ax ; return zero
  70. jmp return_AX_CLC
  71. ;
  72. ; Set the Network Name
  73. ;
  74. f5E01:
  75. ; mov name_num,ch ; Get the Network and NetBios Nos.
  76. ; mov netbios,cl ; and save in local variables
  77. mov word ptr netbios,cx
  78. inc net_set_count
  79. push ds ! push es
  80. pop ds ! pop es ; Copy the specified name
  81. mov si,dx ; to internal save area
  82. mov di,offset net_name
  83. mov cx,15 ; Copy 15 byte name leave
  84. rep movsb ; Terminating 00
  85. push es ! pop ds
  86. jmps f5E_success
  87. ; *****************************
  88. ; ***    DOS Function 5F    ***
  89. ; ***    Network Control    ***
  90. ; *****************************
  91. ;
  92. Public func5F
  93. func5F:
  94. cmp al,07h
  95.  je func5F_10
  96. cmp al,08h
  97.  jne func5F_40
  98. func5F_10:
  99. push ax
  100. mov al,dl
  101. call get_ldt_raw
  102. pop ax
  103.  jc func5F_30
  104. cmp es:word ptr LDT_PDT[bx],1
  105.  jb func5F_30
  106. or es:byte ptr LDT_FLAGS+1[bx],LFLG_PHYSICAL/100h
  107. cmp al,07h
  108.  je func5F_30
  109. and es:byte ptr LDT_FLAGS+1[bx],(not LFLG_PHYSICAL)/100h
  110. func5F_30:
  111. jnc func5F_OK
  112. mov ax,ED_DRIVE
  113. jmp error_exit
  114. func5F_40:
  115. mov ax,I2F_REDIR_5F ; magic int 2F number
  116. Public func5F_common
  117. func5F_common:
  118. push ds
  119. push int21AX ; AX passed on the stack..
  120. push es
  121. call reload_ES ; get the segment registers
  122. pop ds ;  back to entry state
  123. stc ; assume it will fail
  124. int 2fh ; pass it on to MSNET
  125. pop ds ; throw away word on the stack
  126. pop ds
  127.  jc func5F_error
  128. func5F_OK:
  129. jmp return_AX_CLC ;  return the result
  130. func5F_error:
  131. neg ax ; our error convention is negative..
  132. jmp error_exit ; Error for all sub functions
  133. PCMODE_DATA DSEG WORD
  134. extrn net_name:byte
  135. extrn net_set_count:byte
  136. extrn name_num:byte
  137. extrn netbios:byte
  138. extrn int21AX:word
  139. end