


;   $VER: SaveText.asm V0.1 by Andry of PEGAS (11.6.1997)



		INCDIR	"INCLUDE:"
		INCLUDE	"lvo/exec_lib.i"
		INCLUDE	"lvo/dos_lib.i"
		INCLUDE	"dos/dos.i"

;*************************************************************************
		SECTION	pokus,CODE
Start		movem.l	d2-d7/a2-a6,-(sp)

	;***get command line arguments
		lea	(EB,PC),a0	;execbase
		move.l	4.w,(a0)

		movea.l	(EB,PC),a6
		moveq	#0,d0
		lea	dosname,a1
		jsr	(_LVOOpenLibrary,a6)
		move.l	d0,dosbase
		beq.w	nodos

		movea.l	dosbase,a6
		move.l	#template,d1	;vzor
		move.l	#ArgsBuf,d2	;results
		moveq	#0,d3
		jsr	(_LVOReadArgs,a6)
		move.l	d0,RDargs
		beq.w	badargs

		move.l	ArgsBuf,filename
		move.l	ArgsBuf+4,ptrarray

	;***Open file
		move.l	filename,d1
		move.l	#MODE_READWRITE,d2
		jsr	(_LVOOpen,a6)	;open file
		move.l	d0,fhandle
		beq.w	NotSaved
	;***Skip to EOF
		move.l	fhandle,d1	;file
		moveq	#0,d2		;position
		move.l	#OFFSET_END,d3	;mode
		jsr	(_LVOSeek,a6)	;skip
		cmpi.l	#-1,d0
		beq.w	SeekErr
	;***Get strings and save them
.nextstring	movea.l	ptrarray,a0
		movea.l	(a0)+,a2	;ptr to the string
		move.l	a0,ptrarray
		cmpa.l	#0,a2
		beq.s	EndOfArray
	;   **Get len of the string
		movea.l	a2,a3
.no		tst.b	(a3)+	;end of string?
		bne.s	.no
		move.b	#10,(-1,a3)	;LF
		suba.l	a2,a3		;a3-len of the string+LF
	;   **Save it

		move.l	fhandle,d1	;fhandle
		move.l	a2,d2		;buffer
		move.l	a3,d3		;lenght
		jsr	(_LVOWrite,a6)
		cmpa.l	d0,a3		;all bytes written?
		beq.s	.nextstring	;ok
		bra.w	WriteErr

EndOfArray	clr.l	-(sp)	;all ok
		;***close file
closef		move.l	fhandle,d1
		jsr	(_LVOClose,a6)

freeargs	movea.l	dosbase,a6
		move.l	RDargs,d1
		jsr	(_LVOFreeArgs,a6)

closedos	movea.l	(EB,PC),a6
		movea.l	dosbase,a1
		jsr	(_LVOCloseLibrary,a6)
exit
		move.l	(sp)+,d0
		movem.l	(sp)+,d2-d7/a2-a6
		rts		;exit!!!!!!!!!!!!!

WriteErr	lea	writeerrortext,a0
		bsr.s	PrintText
		move.l	#0,-(sp)
		bra.s	closef
SeekErr		lea	writeerrortext,a0
		bsr.s	PrintText
		move.l	#0,-(sp)
		bra.w	closef
NotSaved	lea	writeerrortext,a0
		bsr.s	PrintText
		move.l	#0,-(sp)
		bra.w	freeargs
badargs		lea	badargstext,a0
		bsr.s	PrintText
		move.l	#0,-(sp)
		bra.w	closedos
nodos		lea	nodostext,a0
		bsr.s	PrintText
		move.l	#0,-(sp)
		bra.s	exit

;**********************************************************
PrintText	;IN: a0-null terminated string
		movea.l	dosbase,a6
		move.l	a0,d2		;address
		jsr	(_LVOOutput,a6)
		move.l	d0,d1		;identif. vystupu
		moveq	#0,d3		;lenght
		movea.l	d2,a0
.1		tst.b	(a0)+
		beq.s	.endtext
		addq.l	#1,d3
		bra.s	.1
.endtext	jsr	(_LVOWrite,a6)
		rts
;***********************************************************************

EB		dc.l	0	;ExecBase


		SECTION	data,DATA
RDargs		dc.l	0
ArgsBuf		dc.l	0,0
template	dc.b	'/A,/A/M',0
badargstext	dc.b	'SaveText by Andry of PEGAS',10
		dc.b	'USAGE: SaveText <filename> <text to save>',10,0
nodostext	dc.b	'SAVETEXT: Couldn',39,'t open "dos.library". Command not succesfull.',0
writeerrortext	dc.b	'SAVETEXT: Text not saved correctly. Command not succesfull.',0
		dc.b	0,'$VER: SaveText V0.1 by Andry of PEGAS (11.6.1997)',0
		cnop	0,4
ptrarray	dc.l	0
filename	dc.l	0
fhandle		dc.l	0
dosbase		dc.l	0
dosname		dc.b	'dos.library',0
