home *** CD-ROM | disk | FTP | other *** search
/ Monster Media 1994 #1 / monster.zip / monster / BBS_UTIL / BM0406_A.ZIP / BMASM.ZIP / 10-NET.ASM next >
Assembly Source File  |  1992-08-02  |  3KB  |  82 lines

  1. ;
  2. ; Changes made by Scott McNay (1:395/11) July 26, 1992, to allow routine to be
  3. ; used with code compiled with BC's /Fs option.  (Most) changes marked with
  4. ; ;BCFS0726.  May have optimized some code also.  This is a plug-in replacement
  5. ; for the original code.
  6.  
  7. ;BCFS0801: Standardized code format.  Made sure that DI, SI, BP, and DS are
  8. ;  saved to meet requirements of BC 7.x.
  9.  
  10.     Extrn    StringAddress:far                                            ;BCFS0726
  11.  
  12. CSEG    SEGMENT    BYTE PUBLIC 'CODE'
  13.     ASSUME    CS:CSEG
  14.     PUBLIC    LPLK10
  15.     PUBLIC    LOK10
  16.     PUBLIC    UNLOK10
  17. LOOPLCK    EQU    11H        ; 3COM LOCK WITH DELAY
  18. LANLOCK    EQU    12H        ; 3COM LOCK WITH RETURN
  19. UNLOCK    EQU    13H        ; 3COM UNLOCK
  20. DRIVE    DB    ?        ; INPUT DRIVE NUMBER
  21. REQUEST    DB    ?        ; TYPE OF REQUEST
  22. DELAY    DW    ?        ; DELAY TIME
  23. ENET    DW    0        ; DUMMY ETHERNET ADDRESS
  24. LENLOK    DW    ?        ; LENGTH OF LOCK NAME
  25. POINTER    DW    ?        ; POINTER TO LOCK NAME
  26. LCKNAME    DB    31 DUP(?)    ; INPUT LOCK NAME
  27.     DB    0        ; TERMINATOR
  28.  
  29. LPLK10    PROC    FAR
  30.     MOV    REQUEST,LOOPLCK
  31.     MOV    DELAY,300    ; WAIT 5 MINUTES FOR LOCK
  32.     JMP    PROCESS
  33. LPLK10    ENDP
  34.  
  35. LOK10    PROC    FAR
  36.     MOV    REQUEST,LANLOCK
  37.     MOV    DELAY,10    ; WAIT 10 SECONDS FOR LOCK
  38.     JMP    PROCESS
  39. LOK10    ENDP
  40.  
  41. UNLOK10    PROC    FAR
  42.     MOV    REQUEST,UNLOCK
  43.     MOV    DELAY,0
  44.  
  45. PROCESS:
  46. INT    3    ;For debugging.  Remove when operation verified              ;BCFS0726
  47.     PUSH    BP        ; SAVE BP
  48.     MOV    BP,SP        ; SAVE SP INTO BP FOR PARM ADDRESSING
  49.     PUSH    DS        ; SAVE BASIC'S DATA SEGMENT
  50.     PUSH    ES        ; SAVE BASIC'S EXTRA SEGMENT
  51.     MOV    BX,[BP+10]    ; GET ADDRESS OF DRIVE NUMBER
  52.     MOV    AL,[BX]        ; GET LOW ORDER BYTE OF DRIVE ADDRESS
  53.     INC    AL        ; ADJUST DRIVE NUMBER
  54.     MOV    DRIVE,AL    ; SAVE THE DRIVE NUMBER
  55.     PUSH    [BP+8]        ; GET A$ STRING DESCRIPTOR ADDRESS          ;BCFS0726
  56.     CALL    StringAddress                              ;BCFS0726
  57.     MOV    LENLOK,CX    ; GET LENGTH OF STRING A$ IN CX REGISTER      ;BCFS0726
  58.     MOV    POINTER,AX                              ;BCFS0726
  59.     MOV    SI,AX        ; OFFSET OF BASIC'S STRING              ;BCFS0726
  60.     MOV    DS,DX                                  ;BCFS0726
  61.     PUSH    CS        ; MOV CS TO ES VIA STACK
  62.     POP    ES        ; TARGET IS IN OUR CSEG
  63.     MOV    DI,OFFSET LCKNAME   ; OFFSET OF WORK AREA
  64.     CLD            ; START FROM THE BOTTOM
  65.     REP    MOVSB        ; COPY BASIC'S STRING TO OUR WORK AREA
  66.     PUSH    CS        ; MOV CS TO DS VIA STACK
  67.     POP    DS        ; OUR CSEG SEGMENT INTO DS
  68.     MOV    BX,OFFSET LCKNAME+2 ; POINT TO NEW NAME
  69.     MOV    SI,OFFSET ENET    ; POINT TO DUMMY ETHERNET ADDRESS
  70.     MOV    AX,WORD PTR DRIVE ; GET DRIVE AND LOCK REQ TYPE FOR LOCK          ;BCFS0726
  71.     MOV    DX,DELAY    ; 3COM DELAY TIME
  72.     INT    60H        ; CALL 3COM LOCK MANAGER
  73.     POP    ES        ; GET BACK BASIC'S EXTRA SEGMENT
  74.     POP    DS        ; GET BACK BASIC'S DATA SEGMENT
  75.     MOV    BX,[BP+6]    ; GET ADDRESS OF RESULT VARIABLE          ;BCFS0801
  76.     MOV    [BX],AL        ; STORE RETURN CODE FROM LOCK MANAGER          ;BCFS0801
  77.     POP    BP
  78.     RET    6
  79. UNLOK10    ENDP
  80. CSEG    ENDS
  81.     END
  82.