Hello,
One of these days I'm going to have to learn how to read

To check wether a drive is empty or not, we have to do some disk operation, like GetCurrentDirectory(Int 21 function 47) on it.
However, if we do this on an empty drive, DOS will intercept with an error-message and prompt for a reply (For instance Disk not ready reading drive A, Abort, Retry, Fail, Take over rest of world?)
The piece of code actually giving that message is called the Critial error handler. But we do not want to have this kind of interference. So what we do is, replace the critical error handler, try int 21 fnc 47 and if that fails, indicate no drive is present. After testing, we can then put the original error handler back.
There are some sources out there for critical error handlers, but basically all that has to be done is set ax to 3, and iret out of there.
Things to check out:
Int 21 function 25 (Set interrupt vector)
Int 21 function 47 (Read Active Directory)
Int 24 (Critical Error Handler)
Hope this helps, Wouter Dijkslag