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

; clears the current file from the buffer

include	model.inc

public	new
extrn	yesno_message:near
extrn	top:near
extrn	mark:near

include	dataseg.inc
extrn	warning:byte		; color attribute for warning messages
extrn	dirty_bits:byte		; status flags
extrn	verify_msg:byte
extrn	filesel:word
extrn	filesiz:dword		; file size
extrn	buffersiz:dword		; bytes available in file buffer
extrn	filename:dword		; ptr to filename
extrn	mark_mode:byte
extrn	push_mode:byte
extrn	file_row:dword
extrn	key_status:byte
extrn	display_mode:byte
@curseg	ends

include	codeseg.inc
new	proc	near
	test	dirty_bits,10000000b
				; has the file has been changed?
	jz	short no_prompt
	mov	key_status,0FFh
	mov	ah,warning
	mov	esi,offset verify_msg
	call	yesno_message
	cmp	al,'N'
	je	short exit

no_prompt:
	xor	eax,eax
	mov	display_mode,al
	mov	push_mode,al
	mov	ebx,filename		; get ptr to filename
	mov	[ebx],al
	mov	filesiz,eax
	and	dirty_bits,00111111b
	cmp	mark_mode,al
	je	short mark_off
	call	mark

mark_off:
	mov	file_row,1
	or	dirty_bits,00100000b	; flag top line refresh

; re-size file buffer
	mov	ecx,1024
	mov	buffersiz,ecx
	mov	bx,filesel
	sys	ResMem32
	call	top
	mov	al,'Y'
exit:	ret

new	endp

@curseg	ends
	end
[ RETURN TO DIRECTORY ]