home *** CD-ROM | disk | FTP | other *** search
/ Programming Languages Suite / ProgLangD.iso / Tu-Basic / GETDRIVE.ASM < prev    next >
Assembly Source File  |  1987-04-01  |  1KB  |  47 lines

  1.  
  2. ; This routine expects a pointer to be  passed on the stack that points to
  3. ; a Turbo Basic integer.  The integer is assigned the value of the current
  4. ; logged drive.
  5. ;
  6. ;  STACK after saving BP
  7. ;
  8. ;   │ 32 bit(segment offset) │
  9. ;   │ pointer to TB integer  │ <----- BP + 6
  10. ;   │ representing drive id  │
  11. ;   ├────────────────────────┤
  12. ;   │ return address that    │
  13. ;   │ TB will go to after    │ <----- BP + 2
  14. ;   │ completion of routine  │
  15. ;   ├────────────────────────┤
  16. ;   │       saved BP         │ <----- BP
  17. ;   │                 │
  18. ;   └────────────────────────┘
  19.  
  20.  
  21.  
  22. DosCall  equ  21h    ; equates for module
  23. GetDrive equ  19h
  24.  
  25.  
  26. program segment  ; begin program segment
  27.   assume cs:program
  28.  
  29.   push  bp    ; save bp
  30.   mov   bp, sp
  31.   push  es      ; save es because we'll use it for pointer manipulation
  32.  
  33.   les   di, [bp + 6h]    ; load pointer to integer into es:di
  34.  
  35.   mov   ah, GetDrive
  36.   int   DosCall
  37.   cbw
  38.   mov   es:[di], ax
  39.  
  40.   pop   es    ; restore registers
  41.   pop   bp
  42.  
  43. program ends    ; end program segment
  44.  
  45. end
  46.  
  47.