Metropoli BBS
VIEWER: merge.asm MODE: TEXT (ASCII)
; MERGE.ASM for E32 - Copyright (C) 1994 Douglas Herr
;  all rights reserved

include	model.inc

public	merge
extrn	open_space:near
extrn	mload:near
extrn	memcopy:near
extrn	error:near
extrn	edit_filename:near

fname	equ	[ebp-64]

include	dataseg.inc
extrn	cursor:dword
extrn	dirty_bits:byte
extrn	file_read_error:byte
mrg_mes	db 'Merge: ',0
@curseg	ends

include	codeseg.inc
merge	proc	near
	enter	64,0
	mov	byte ptr fname,0
	lea	esi,mrg_mes
	call	edit_filename
	cmp	ax,27		; ESC key?
	je	short exit	;  done if so

	lea	edx,fname
	call	mload
	jnc	short m0
	lea	edx,file_read_error
	call	error
	clc
	jmp	short exit
m0:
	push	ebx
	push	eax
	call	open_space	; ret: ES = filesel
	pop	ecx		; sizeof new file
	pop	ebx		; BX = new file selector
	xor	esi,esi
	mov	edi,cursor

	push	ds
	mov	ds,bx
	call	memcopy
	pop	ds
	sys	RelMem
	or	dirty_bits,10000001b
exit:
	leave
	ret
merge	endp

@curseg	ends
	end
[ RETURN TO DIRECTORY ]