www.pudn.com > scanner_4a.zip > DEVCALL.ASM
.MODEL LARGE,C .286 .DATA TRUE equ 1 FALSE equ -1 DriveName db 'A4SPI$ ', 0 sOpenFlag db 0 DriveHandle dw 0 Ioctl_cmd dd 0 .CODE PUBLIC SCNOpen,SCNCall,SCNClose SCNOpen PROC FAR USES ax bx cx dx si di ds es mov ax,@data mov ds,ax mov ax, TRUE cmp sOpenFlag, 0 jne s_exit mov sOpenFlag, 1 lea dx, DriveName mov ax, 3d02h int 21h ;execute open a file jc s_fail mov DriveHandle, ax mov ax, TRUE jmp s_exit s_fail: mov ax, FALSE s_exit: ret SCNOpen endp ; SCNCall PROC FAR USES ax bx cx dx si di ds es, parm:far PTR DWORD mov ax,@data mov ds,ax lea bx,Ioctl_cmd ;0 mov dx,bx ;to be used by dos les ax,parm mov word ptr [bx],ax mov word ptr [bx+2],es mov bx, DriveHandle ;0 mov cx, 4 mov ax, 4403h ;execute ioctl for devices int 21h ret SCNCall endp ; SCNClose PROC FAR USES ax bx cx dx si di ds es mov ax,@data mov ds,ax cmp sOpenFlag, 0 je noclose mov sOpenFlag, 0 mov bx, DriveHandle or bx, bx jz noclose mov ah, 3eh int 21h noclose:ret SCNClose endp END