; procedura służąca do odebrania pliku o długości $1178 bajtów
; z Atari i zapisania go pod nazwą df0:AtoA

; komunikacja idzie przez PRB, sterowanie komunikacją bitem PRA.BUSY


; zachowanie stanu portow

g:	move.b	$bfd200,bu	;save DDRA
	move.b	$bfe301,po	;save DDRB

; skonfigurowanie PRA i PRB do komunikacji

	bset	#0,$bfd200	;DDRA./BUSY to output
	bclr	#0,$bfd000	;PRA./BUSY to zero
	move.b	#0,$bfe301	;DDRB to input

; tu jest czekanie na wcisniecie LMB

w:	btst	#6,$bfe001	;PRA./FIR0
	bne	w		;loop if 1

; i odebranie ilosci danych

	bsr	l10
	move.b	$bfe101,ld	;PRB msb of data length
	bsr	l11

	bsr	l10
	move.b	$bfe101,ld+1	;PRB lsb of data length
	bsr	l11

; i sprawdzenie czy plik ma $1178 bajtow

	move.w	ld,d0
	cmp.w	#$1178,d0
	beq	dl
	rts

; tu jest odebranie pliku z atari do bufora pod $50000

dl:	move.l	sd,a2		;$50000
	move.l	sd,a0
	move.w	d0,a1
	adda.l	a0,a1

dx:	cmpi.l	a1,a2
	beq	k
	addq.l	#1,a2

	bsr	l10
	move.b	$bfe101,(a0)+	;PRB data
	bsr	l11

	bra	dx

; a tu to pewnie jest zapisanie pliku

k:	move.l	4,a6
	lea	dn,a1
	clr.l	d0
	jsr	-552(a6)
	move.l	d0,db
	beq	k1
	move.l	db,a6
	move.l	#1006,d2
	move.l	db,a6
	move.l	#pn,d1		;?????? chyba tu jest błąd w listingu w TA
	jsr	-30(a6)
	move.l	d0,filehd
	beq	k1
	move.l	sd,d2
	clr.l	d3
	move.w	ld,d3
	move.l	db,a6
	move.l	filehd,d1
	jsr	-48(a6)
	move.l	db,a6
	move.l	filehd,d1
	jsr	-36(a6)
	move.l	4,a6
	move.l	db,a1
	jsr	-414(a6)

; odtworzenie stanu portow

k1:	move.b	po,$bfe301	;restore DDRB
	move.b	bu,$bfd200	;restore DDRA
	rts

; a tu sa procedury pomocnicze

l10:	bchg	#1,$bfe001	;PRA./LED - mruga dioda przy kazdym bajcie
	bset	#0,$bfd000	;PRA.BUSY
	rts

l11:	clr.l	d0
	moveq	#15,d0
l1:	dbf	d0,l1
	bclr	#0,$bfd000	;PRA.BUSY

l12:	clr.l	d0
	move.w	#750,d0
l2:	dbf	d0,l2
	rts

; i dane

sd:	dc.l	$50000
ld:	dc.w	0
db:	dc.l	0
filehd:	dc.l	0
pn:	dc.b	'df0:AtoA',0
bu:	dc.b	0
dn:	dc.b	'dos.library',0
po:	dc.b	0

