שתשת                                        ;
;Wycina ibiemowsie entery z pliku...
;rtk zmuszony plikami z sieci.....
;95.08.02

;dos
_Open	EQU	-30
_Close	EQU	-36
_Read	EQU	-42
_Write	EQU	-48
_Seek	EQU	-66
_Rename	EQU	-78
MODE_OLDFILE	EQU	1005
OFFSET_END	equ	1
OFFSET_BEGINNING	equ	-1

;exec
_OldOpenLibrary	EQU	-408
_CloseLibrary	EQU	-414
_AllocMem	EQU	-198
_FreeMem	EQU	-210
MEMF_PUBLIC	=1
MEMF_CLEAR	=$10000


EXEC:	MACRO
	move.l	4.w,a6
	ENDM
CALL:	MACRO
	jsr	_\1(a6)
	ENDM
JUMP:	MACRO
	jmp	_\1(a6)
	ENDM
MOVEL:	MACRO
	move.l	\1Base(pc),a6
	ENDM

Start:
		tst.l	d0
		beq.w	End
		move.l	a0,MessageAdr

		lea	DosName(pc),a1
		EXEC
	CALL	OldOpenLibrary
		move.l	d0,DosBase
		move.l	d0,a6
		beq.w	End

		move.l	MessageAdr(pc),a1

		move.l	#MODE_OLDFILE,d2
	CALL	Open
		move.l	d0,FHandle
		beq.w	CloseLib
		move.l	d0,d1
		moveq	#0,d2
		moveq	#OFFSET_END,d3
	CALL	Seek
		move.l	FHandle(pc),d1
		moveq	#0,d2
		moveq	#OFFSET_BEGINNING,d3
	CALL	Seek
		move.l	d0,FSize	;lenght

	bsr.w	AllocMem
		move.l	d0,AllocAdr
		beq.w	CloseFile
		move.l	FSize(pc),d0
	bsr.w	AllocMem
		move.l	d0,AllocAdr2
		beq.w	FreeFirst

	MOVEL	Dos
		move.l	FHandle(pc),d1
		move.l	AllocAdr(pc),d2
		move.l	FSize(pc),d3
	CALL	Read
		cmp.l	FSize(pc),d0
		bne.s	ReadError

		move.l	FHandle(pc),d1
	CALL	Close

		move.l	AllocAdr(pc),a0
		move.l	a0,a2
		move.l	FSize(pc),d7
		add.l	d7,a2		;end
		move.l	AllocAdr2(pc),a1
		bra.s	copy
check
		cmp.l	a2,a0
		bcc.s	endconv	;gdy c=0

		move.b	(a0)+,d0
		cmp.b	#$d,d0
		beq.s	ibm
copy
		move.b	d0,(a1)+
		bra.s	check
ibm
		cmp.b	#$a,(a0)
		bne.s	copy		;no second enter ?
		move.b	(a0)+,(a1)+
		bra.s	check
endconv
		move.l	AllocAdr(pc),d0
		sub.l	d0,a1
		move.l	a1,NewLenght


		move.l	MessageAdr(pc),d1
		move.l	#1006,d2	;mode_new
	CALL	Open
		move.l	d0,FHandle
		beq.s	ReadError

		move.l	d0,d1
		move.l	AllocAdr2(pc),d2
		move.l	NewLenght(pc),d3
	CALL	Write

ReadError:
		move.l	AllocAdr2(pc),a1
		bsr.s	FreeMem

FreeFirst:	move.l	AllocAdr(pc),a1
		bsr.s	FreeMem

CloseFile:
		MOVEL	Dos
		move.l	FHandle(pc),d1
		CALL	Close

CloseLib:
		move.l	a6,a1
		EXEC
		CALL	CloseLibrary

End:
		moveq	#0,d0
		rts

AllocMem:
		EXEC
		move.l	#MEMF_PUBLIC+MEMF_CLEAR,d1
		JUMP	AllocMem
FreeMem:	EXEC
		move.l	FSize(pc),d0
		JUMP	FreeMem

MessageAdr:	dc.l	0
AllocAdr:	dc.l	0
AllocAdr2:	dc.l	0
DosBase:	dc.l	0
FHandle:	dc.l	0
FSize:		dc.l	0
NewLenght:	dc.l	0
DosName:	dc.b	'dos.library',0

