home *** CD-ROM | disk | FTP | other *** search
/ Turbo Toolbox / Turbo_Toolbox.iso / 1989 / 04 / tricks / prodriv.asm < prev    next >
Encoding:
Assembly Source File  |  1989-01-09  |  3.3 KB  |  133 lines

  1. ;* ------------------------------------------------------- *
  2. ;*                      PRODRIV.ASM                        *
  3. ;* Treiber zum Schutz eines Verzeichnisses vor unbefugtem  *
  4. ;* Zugriff.                                                *
  5. ;*          (c) 1989 Dietmar Höhmann & TOOLBOX             *
  6. ;* ------------------------------------------------------- *
  7. ;* Der Treiber muß folgendermaßen übersetzt werden:        *
  8. ;* MASM PRODRIV;                                           *
  9. ;* LINK PRODRIV;                                           *
  10. ;* EXE2BIN PRODRIV.EXE PRODRIV.SYS                         *
  11. ;* In die Datei CONFIG.SYS muß die Zeile                   *
  12. ;* DEVICE=\<verzeichnis>\PRODRIV.SYS eingefügt werden      *
  13. ;* ------------------------------------------------------- *
  14. code     segment
  15.          assume cs:code,ds:code,es:code,ss:code
  16.  
  17.          org 0
  18.  
  19. ;Treiberkopf
  20.  
  21.          dw -1,-1                                 ; Vektor auf nächsten Treiber
  22.          dw 8800h                                 ; Attribut
  23.          dw offset strat                          ; Strategie-Routine
  24.          dw offset intr                           ; Interrupt-Routine
  25. name:    db "CONFIG  "
  26.  
  27. Pointer  dw ?,?
  28. Password db "phoenix soft$"
  29. meld     db "Enter password for directory CONFIG: $"
  30.  
  31. strat    proc far
  32.          mov cs:pointer,bx
  33.          mov cs:pointer+2,es
  34.          ret
  35. strat    endp
  36.  
  37. intr     proc far
  38.          push ax
  39.          push bx
  40.          push cx
  41.          push dx
  42.          push di
  43.          push si
  44.          push bp
  45.          push ds
  46.          push es
  47.          pushf
  48.          push cs
  49.          pop  ds
  50.          les  di,dword ptr pointer
  51.          mov  bl,es:[di+2]
  52.          cmp  bl,0
  53.          je   init
  54.          cmp  bl,8
  55.          je   write
  56.          cmp  bl,9
  57.          je   write
  58.          cmp  bl,14
  59.          je   close
  60.          cmp  bl,4
  61.          je   read
  62.          cmp  bl,5
  63.          je   read
  64.          mov  ax,0100h
  65. return:  mov  es:[di+3],ax
  66.          popf
  67.          pop es
  68.          pop ds
  69.          pop bp
  70.          pop si
  71.          pop di
  72.          pop dx
  73.          pop cx
  74.          pop bx
  75.          pop ax
  76.          ret
  77. intr     endp
  78.  
  79. write    proc near
  80.          mov  ax,0100h
  81.          jmp  return
  82. write    endp
  83.  
  84. close    proc near
  85.          mov  ax,0100h
  86.          jmp  return
  87. close    endp
  88.  
  89. read     proc near
  90.          mov  es:[di+12h],word ptr 0
  91.          mov  ax,8009H
  92.          jmp  return
  93. read     endp
  94.  
  95. init     proc near
  96.          mov  ah,2
  97.          int  22
  98.          dec  al
  99.          jnz  next
  100.          mov  dx,offset meld
  101.          mov  ah,9
  102.          int  21h
  103.          mov  si,offset password
  104. loop1:   mov  ah,0
  105.          int  16h
  106.          cmp  al,0
  107.          je   next
  108.          cmp  al,[si]
  109.          jne  next
  110.          inc  si
  111.          cmp  [si],byte ptr "$"
  112.          jne  loop1
  113.          jmp  falsch
  114. next:
  115.          mov  si,offset password
  116. loop:    mov  [si],byte ptr 0
  117.          inc  si
  118.          cmp  [si],byte ptr "$"
  119.          jne  loop
  120.          mov  word ptr es:[di+14],offset init
  121.          mov  es:[di+16],cs
  122.          xor  ax,ax
  123.          jmp  return
  124. falsch:
  125.          mov  ah,"a"
  126.          mov  si,offset name
  127.          mov  [si],ah
  128.          jmp  next
  129. init     endp
  130.  
  131. code     ends
  132.          end
  133.