	title 'bank & move module for CP/M3 linked BIOS'

; MC80 Version 2.0
; 22.10.89

	cseg

	public ?move,?xmove
	extrn @cbnk,@comon

	maclib z80
	maclib ports


?xmove:				; setzen Interbankmove
	sbcd	movbnk
	ret

?move:
	lda	movbns		; Test ob Interbankmove
	cpi	0ffh
	jnz	movei		; --> Interbankmove
;	mov	a,c		; Test ob MOVE -Laenge < 80h
;	ani	80h
;	ora	b
;	jnz	movex		; --> Laenge mindestens 80h
	xchg			; Laenge kleiner 80h mit LDIR
	ldir
	xchg
	ret

movei:
	exx
	mvi c,bnkport ! lhld movbnk
	exx
	di
movei1:
	exx
	outp l		; movbns
	exx
	ldax d		; get value
	exx
	outp h		; movbnd
	exx
	mov m,a ! inx h ! inx d ! dcx b
	mov a,b ! ora c
	jrnz movei1
	lda @cbnk
	out bnkport
	ei
	mvi a,0ffh ! sta movbns
	ret

movbnk:
movbns:	db	0ffh
movbnd:	db	0ffh

; kein Interbankmove aber Laenge groesser 80h mit DMA-Baustein
;movex:
;	MVI	A,1		; Ziel und Quellbank auf 1
;	xra	a		; Ziel und Quellbank auf 0
;	out	dmard
;	out	dmawr
;	lda	@comon+1	; Test ob Quelle innerhalb
;	dcr	a		; des COMMON
;	cmp	d
;	jc	movex1		; --> ja
;	lda	@cbnk		; sonst current Bank select
;	out	dmard
;movex1:
;	lda	@comon+1	; Test ob Ziel innerhalb
;	dcr	a		; des COMMON
;	cmp	h
;	jc	movet		; --> ja
;	lda	@cbnk		; sonst current Bank select
;	out	dmawr
;	jmp	movet

; Interbankmove
;movei:
;	lda	movbns		; Einstellen Quellbank
;	out	dmard
;	lda	movbnd		; Einstellen Zielbank
;	out	dmawr

; Transfer mit Z80-DMA
;movet:
;	shld	rdmadr		; Ziel
;	sded	rdmaso		; Quelle
;	dcx	b
;	sbcd	rdmale		; Laenge
;	lxi	h,rdma		; Initialisierung DMA-Baustein
;	mvi	b,rdmaol
;	mvi	c,dma
;	outir

; Hier findet die gesamte Uebertragung statt

;	mvi	b,rdmail
;	inir
;	lhld	rdmard
;	lded	rdmars
;	lxi	b,0
;	inx	h
;	mvi	a,0ffh
;	sta	movbns	; Beenden Interbankmove
;	ret

; Initialisierungstabelle Ram - DMA

;rdma:
;	db	0c3h,14h,10h,8ah
;	db	79h
;rdmaso:	ds	2
;rdmale:	ds	2
;	db	0adh
;rdmadr:	ds	2
;	db	0cfh,5,0cfh,87h,0bbh,78h
;rdmaol	equ	$-rdma
;rdmar0:
;rdmars:	ds	2
;rdmard:	ds	2
;rdmail	equ	$-rdmar0

	end
