; LASTDRV.ASM -- uses only documented DOS

; masm lastdrv;
; link lastdrv;

_STACK  segment para stack 'STACK'
_STACK  ends

_DATA   segment word public 'DATA'
msg     db      'LASTDRIVE='
dletter db      (?)
        db      0dh, 0ah, '$'
_DATA   ends

_TEXT   segment word public 'CODE'

        assume cs:_TEXT, ds:_DATA, ss:_STACK

main    proc    near
        mov     ax, _DATA
        mov     ds, ax          ; set DS to data segment
        mov     ah, 19h         ; Get Current Disk function
        int     21h             ; call MS-DOS

        mov     dl, al          ; AL now holds current drive
        mov     ah, 0Eh         ; Select Disk function
        int     21h             ; call MS-DOS
        mov     bl, al          ; LASTDRIVE in AL; save in BL
        add     al, ('A' - 1)   ; convert to drive letter
        mov     dletter, al     ; insert into string

        mov     dx, offset msg  ; string in DS:DX
        mov     ah, 9           ; Display String function
        int     21h             ; call MS-DOS

        mov     ah, 4Ch         ; Return to DOS
        mov     al, bl          ; LASTDRIVE is exit code
        int     21h             ; call MS-DOS
main    endp

_TEXT   ends

        end main
