;
; SMAPI; Modified Squish MSGAPI
;
; Squish MSGAPI0 is copyright 1991 by Scott J. Dudley. All rights reserved.
; Modifications released to the public domain.
;
; Use of this file is subject to the restrictions contain in the Squish
; MSGAPI0 licence agreement. Please refer to licence.txt for complete
; details of the licencing restrictions. If you do not find the text
; of this agreement in licence.txt, or if you do not have this file,
; you should contact Scott Dudley at FidoNet node 1:249/106 or Internet
; e-mail Scott.Dudley@f106.n249.z1.fidonet.org.
;
; In no event should you proceed to use any of the source files in this
; archive without having accepted the terms of the MSGAPI0 licensing
; agreement, or such other agreement as you are able to reach with the
; author.
;
ifndef __FLAT__
.model large, pascal
else
.386p
.model small, pascal
endif
.code
public FARWRITE, FARREAD, SHARELOADED
ifndef __FLAT__
FARREAD proc
push bp
mov bp,sp
push ds
mov bx,word ptr [bp+12] ; load file handle
mov cx,word ptr [bp+6] ; load length
mov ax,word ptr [bp+10] ; load segment
mov dx,word ptr [bp+8] ; load offset
mov ds,ax ; move the segment into DS
mov ah,3fh
int 21h
jnc okay
mov ax, -1
okay:
pop ds
pop bp
ret 8
FARREAD endp
FARWRITE proc
push bp
mov bp,sp
push ds
mov bx,[bp+12] ; load file handle
mov cx,[bp+6] ; length of write
mov ax,word ptr [bp+10] ; load segment
mov dx,word ptr [bp+8] ; load offset
mov ds,ax ; move the segment into DS
mov ah,40h
int 21h
jnc done_it
mov ax,-1
done_it:
pop ds
pop bp
ret 8
FARWRITE endp
SHARELOADED proc
mov ax,1000h
int 2fh
cmp al,0ffh ; 0ffh = SHARE is loaded
je has_share
xor ax,ax
has_share:
ret
SHARELOADED endp
else
FARREAD proc
mov ecx,[esp+4] ; load length
mov edx,[esp+8] ; load offset
mov ebx,[esp+12] ; load file handle
mov ah,3fh
int 21h
jnc okay
mov eax, -1
okay:
ret 0ch
FARREAD endp
FARWRITE proc
mov ebx,[esp+12] ; load file handle
mov ecx,[esp+4] ; length of write
mov edx,[esp+8] ; load offset
mov ah,40h
int 21h
jnc done_it
mov eax,-1
done_it:
ret 0ch
FARWRITE endp
SHARELOADED proc
mov eax,1000h
int 2fh
cmp al,0ffh ; ffh = SHARE is loaded
je has_share
xor ax,ax
has_share:
ret
SHARELOADED endp
endif
end
syntax highlighted by Code2HTML, v. 0.9.1