home *** CD-ROM | disk | FTP | other *** search
- include compiler.inc
- ttl $STRHAND, 1.01, 08-03-86 clr
-
- ; internal routine to convert stream pointer to handle. If bad handle, returns
- ; AX=-1; else returns handle in AX. Returns state of MODE BIT (offset 2 in _ftb
- ; in BL register, state of UGC (word) in CX
-
-
- dseg
- exterr
- extrn _ftb:byte
-
- cseg
-
- procdef $strhand <<stream,ptr>>
- pushreg
- pushds
-
- mov si,offset _ftb
- ldptr ax,stream,ds
- mov dx,ds
- or dx,ax
- jz invalid
-
- mov di,ax ;save stream pointer
- sub ax,si ;convert to handle
- jz nodiv
- mov si,5
- cwd
- div si
- nodiv: xor dx,dx ;clear error code
- moverr dx
- cmp ax,0 ;check range
- jl seterr
- cmp ax,19 ;20 handles is DOS max
- jl ok
-
- seterr:
- or byte ptr 2[di],10h ; set error code
- mov ax,-1 ;and return ERROR
- ok:
- mov bl,byte ptr 2[di] ; return MODE BIT
- mov cx,word ptr [di] ; return UGC BYTE
- out1:
- pret
- invalid:
- mov ax,-1
- jmp short out1
- pend $strhand
- finish
-