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