home *** CD-ROM | disk | FTP | other *** search
/ io Programmo 23 / IOPROG_23.ISO / SOFT / ASM / GRDBDL17.ZIP / DRIVE.ASM < prev    next >
Encoding:
Assembly Source File  |  1998-10-26  |  1.5 KB  |  100 lines

  1. ;
  2. ; GRDP
  3. ;
  4. ; Copyright(c) LADsoft
  5. ;
  6. ; David Lindauer, camille@bluegrass.net
  7. ;
  8. ;
  9. ; DRIVE.ASM
  10. ;
  11. ; Function: Handle logical drive functions
  12. ;
  13.     ;MASM MODE
  14.     .MODEL SMALL
  15.     .386
  16.  
  17.  
  18. include  eprints.inc 
  19. include  einput.inc 
  20. include  emtrap.inc 
  21.  
  22.     PUBLIC drive
  23.  
  24.     .data
  25. int24ParmBlock    dd    0    ;int 24/24 parameter block
  26.         dw    0
  27.         dd    0
  28.  
  29.     .CODE
  30. drive    PROC
  31.     lodsb
  32.     cmp    al,'r'        ; verify subcommand
  33.     jz    ok
  34.     cmp    al,'w'
  35.     jz    ok
  36.     stc
  37.     ret
  38. ok:
  39.     cmp    al,'r'
  40.     pushf
  41.     call    WadeSpace
  42.     cmp    al,'a'        ; get drive
  43.     jc    err1
  44.     cmp    al,'z'
  45.     ja    err1
  46.     sub    al,'a'
  47.     inc    si
  48.     push    ax
  49.     cmp    byte ptr [si],':'
  50.     jnz    noinc
  51.     inc    si
  52. noinc:
  53.     call    WadeSpace
  54.     jz    err2
  55.     call    ReadAddress    ; get buffer address
  56.     jc    err2
  57.     call    defDS        ; get DS
  58.     mov    word ptr [int24ParmBlock+6],bx    ; set up parameter block
  59.     mov    word ptr [int24ParmBlock+8],dx
  60.     call    WadeSpace
  61.     jz    err2
  62.     call    ReadNumber        ; get start
  63.     jc    err2
  64.     mov    dword ptr [int24ParmBlock],eax
  65.     mov    word ptr [int24ParmBlock+4],1
  66.     call    WadeSpace
  67.     jz    nosize
  68.     call    ReadNumber        ; get size
  69.     jc    err2
  70.     mov    word ptr [int24ParmBlock+4],ax
  71.     call    WadeSpace
  72.     jnz    err2
  73. nosize:
  74.     pop    ax
  75.     mov    cx,-1
  76.     mov    bx,offset int24ParmBlock
  77.     popf                         ; figure out what to do
  78.     jz    doread
  79.     int    26h
  80.     jmp    combine
  81. doread:
  82.     int    25h
  83. combine:
  84.     jnc    noerr
  85.     push    ax
  86.     PRINT_MESSAGE    <13,10,"Error: ">
  87.     pop    ax
  88.     call    printword
  89. noerr:
  90.     add    sp,2              ; stupid INT 25/26 leaves flags on stack
  91.     clc
  92.     ret
  93. err2:
  94.     pop    ax
  95. err1:
  96.     popf
  97.     stc
  98.     ret
  99. drive    endp
  100. end