;Screen and File Routines
	cseg
	xref	_asmlines

	xdef	_p64to16
_p64to16:
	movem.l	d0-d7/a0-a6,-(a7)
	move.l	64(a7),a0
	move.l	68(a7),d7
	subq.w	#1,d7
	move.l	a0,a1
slp:	move.w	(a0)+,d0
	lsr.w	#2,d0
	lsl.b	#4,d0
	lsr.w	#4,d0
	move.b	d0,(a1)+
	dbra	d7,slp
	movem.l (a7)+,d0-d7/a0-a6
	rts

	xdef	_clrscr
_clrscr:
	movem.l	d0-d7/a0-a6,-(a7)
	move.l	64(a7),a1
	move.l	68(a7),a2
	move.l	72(a7),a3
	move.l	76(a7),a4
	move.w	_asmlines,d5
clrlp0:	move.w	#38,d7
clrlp1:	clr.w	(a1)+
	clr.w	(a2)+
	clr.w	(a3)+
	clr.w	(a4)+
	dbra	d7,clrlp1
	lea.l	2(a1),a1
	lea.l	2(a2),a2
	lea.l	2(a3),a3
	lea.l	2(a4),a4
	dbra	d5,clrlp0
	movem.l (a7)+,d0-d7/a0-a6
	rts

	xdef	_bwview
_bwview:
	movem.l	d0-d7/a0-a6,-(a7)
	move.l	64(a7),a0
	move.l	68(a7),a1
	move.l	72(a7),a2
	move.l	76(a7),a3
	move.l	80(a7),a4
	move.l	84(a7),a5
	move.w	_asmlines,d5
bwlp0:	move.l	a0,a6
	move.w	#38,d7
bwlp1:	move.w	(a6)+,d6
	move.w	d6,(a1)+
	clr.w	(a2)+
	clr.w	(a3)+
	clr.w	(a4)+
	dbra	d7,bwlp1
	lea.l	2(a1),a1
	lea.l	2(a2),a2
	lea.l	2(a3),a3
	lea.l	2(a4),a4
	adda.l	a5,a0
	dbra	d5,bwlp0
	movem.l (a7)+,d0-d7/a0-a6
	rts

	xdef	_grayview
_grayview:
	movem.l	d0-d7/a0-a6,-(a7)
	move.l	64(a7),a0
	move.l	68(a7),a1
	move.l	72(a7),a2
	move.l	76(a7),a3
	move.l	80(a7),a4
	move.l	84(a7),a5
	move.l  #$10000000,d6
	move.w	_asmlines,d5
grlp0:	move.l	a0,a6
	move.w	#77,d7
grlp1:	move.l	(a6)+,d0
	add.l	d6,d0
	lsl.l	#1,d0
	roxl.b	#1,d4
	lsl.l	#1,d0
	roxl.b	#1,d3
	lsl.l	#1,d0
	roxl.b	#1,d2
	lsl.l	#1,d0
	roxl.b	#1,d1
	add.l	d6,d0
	lsl.l	#1,d0
	roxl.b	#1,d4
	lsl.l	#1,d0
	roxl.b	#1,d3
	lsl.l	#1,d0
	roxl.b	#1,d2
	lsl.l	#1,d0
	roxl.b	#1,d1
	add.l	d6,d0
	lsl.l	#1,d0
	roxl.b	#1,d4
	lsl.l	#1,d0
	roxl.b	#1,d3
	lsl.l	#1,d0
	roxl.b	#1,d2
	lsl.l	#1,d0
	roxl.b	#1,d1
	add.l	d6,d0
	lsl.l	#1,d0
	roxl.b	#1,d4
	lsl.l	#1,d0
	roxl.b	#1,d3
	lsl.l	#1,d0
	roxl.b	#1,d2
	lsl.l	#1,d0
	roxl.b	#1,d1
	add.l	d6,d0
	lsl.l	#1,d0
	roxl.b	#1,d4
	lsl.l	#1,d0
	roxl.b	#1,d3
	lsl.l	#1,d0
	roxl.b	#1,d2
	lsl.l	#1,d0
	roxl.b	#1,d1
	add.l	d6,d0
	lsl.l	#1,d0
	roxl.b	#1,d4
	lsl.l	#1,d0
	roxl.b	#1,d3
	lsl.l	#1,d0
	roxl.b	#1,d2
	lsl.l	#1,d0
	roxl.b	#1,d1
	add.l	d6,d0
	lsl.l	#1,d0
	roxl.b	#1,d4
	lsl.l	#1,d0
	roxl.b	#1,d3
	lsl.l	#1,d0
	roxl.b	#1,d2
	lsl.l	#1,d0
	roxl.b	#1,d1
	add.l	d6,d0
	lsl.l	#1,d0
	roxl.b	#1,d4
	lsl.l	#1,d0
	roxl.b	#1,d3
	lsl.l	#1,d0
	roxl.b	#1,d2
	lsl.l	#1,d0
	roxl.b	#1,d1
	move.b	d1,(a1)+
	move.b	d2,(a2)+
	move.b	d3,(a3)+
	move.b	d4,(a4)+
	dbra	d7,grlp1
	lea.l	2(a1),a1
	lea.l	2(a2),a2
	lea.l	2(a3),a3
	lea.l	2(a4),a4
	adda.l	a5,a0
	dbra	d5,grlp0
	movem.l (a7)+,d0-d7/a0-a6
	rts

	xdef	_vplanesep
_vplanesep:
	movem.l	d0-d7/a0-a6,-(a7)
	move.l	64(a7),a0
	move.l	68(a7),a1
	move.l	72(a7),a2
	move.l	76(a7),a3
	move.l	80(a7),a4
	move.l	84(a7),d7
	move.l  #$10000000,d6
 	subq.w	#1,d7
vplp:	move.l	(a0)+,d0
	add.l	d6,d0
	lsl.l	#1,d0
	roxl.b	#1,d4
	lsl.l	#1,d0
	roxl.b	#1,d3
	lsl.l	#1,d0
	roxl.b	#1,d2
	lsl.l	#1,d0
	roxl.b	#1,d1
	add.l	d6,d0
	lsl.l	#1,d0
	roxl.b	#1,d4
	lsl.l	#1,d0
	roxl.b	#1,d3
	lsl.l	#1,d0
	roxl.b	#1,d2
	lsl.l	#1,d0
	roxl.b	#1,d1
	add.l	d6,d0
	lsl.l	#1,d0
	roxl.b	#1,d4
	lsl.l	#1,d0
	roxl.b	#1,d3
	lsl.l	#1,d0
	roxl.b	#1,d2
	lsl.l	#1,d0
	roxl.b	#1,d1
	add.l	d6,d0
	lsl.l	#1,d0
	roxl.b	#1,d4
	lsl.l	#1,d0
	roxl.b	#1,d3
	lsl.l	#1,d0
	roxl.b	#1,d2
	lsl.l	#1,d0
	roxl.b	#1,d1
	add.l	d6,d0
	lsl.l	#1,d0
	roxl.b	#1,d4
	lsl.l	#1,d0
	roxl.b	#1,d3
	lsl.l	#1,d0
	roxl.b	#1,d2
	lsl.l	#1,d0
	roxl.b	#1,d1
	add.l	d6,d0
	lsl.l	#1,d0
	roxl.b	#1,d4
	lsl.l	#1,d0
	roxl.b	#1,d3
	lsl.l	#1,d0
	roxl.b	#1,d2
	lsl.l	#1,d0
	roxl.b	#1,d1
	add.l	d6,d0
	lsl.l	#1,d0
	roxl.b	#1,d4
	lsl.l	#1,d0
	roxl.b	#1,d3
	lsl.l	#1,d0
	roxl.b	#1,d2
	lsl.l	#1,d0
	roxl.b	#1,d1
	add.l	d6,d0
	lsl.l	#1,d0
	roxl.b	#1,d4
	lsl.l	#1,d0
	roxl.b	#1,d3
	lsl.l	#1,d0
	roxl.b	#1,d2
	lsl.l	#1,d0
	roxl.b	#1,d1
	move.b	d1,(a1)+
	move.b	d2,(a2)+
	move.b	d3,(a3)+
	move.b	d4,(a4)+
	dbra	d7,vplp
	movem.l (a7)+,d0-d7/a0-a6
	rts

	xdef	_fplanesep
_fplanesep:
	movem.l	d0-d7/a0-a6,-(a7)
	move.l	64(a7),a0
	move.l	68(a7),a1
	move.l	72(a7),a2
	move.l	76(a7),a3
	move.l	80(a7),a4
	move.l	84(a7),d7
 	subq.w	#1,d7
fplp:	move.l	(a0)+,d0
	lsl.l	#1,d0
	roxl.b	#1,d4
	lsl.l	#1,d0
	roxl.b	#1,d3
	lsl.l	#1,d0
	roxl.b	#1,d2
	lsl.l	#1,d0
	roxl.b	#1,d1
	lsl.l	#1,d0
	roxl.b	#1,d4
	lsl.l	#1,d0
	roxl.b	#1,d3
	lsl.l	#1,d0
	roxl.b	#1,d2
	lsl.l	#1,d0
	roxl.b	#1,d1
	lsl.l	#1,d0
	roxl.b	#1,d4
	lsl.l	#1,d0
	roxl.b	#1,d3
	lsl.l	#1,d0
	roxl.b	#1,d2
	lsl.l	#1,d0
	roxl.b	#1,d1
	lsl.l	#1,d0
	roxl.b	#1,d4
	lsl.l	#1,d0
	roxl.b	#1,d3
	lsl.l	#1,d0
	roxl.b	#1,d2
	lsl.l	#1,d0
	roxl.b	#1,d1
	lsl.l	#1,d0
	roxl.b	#1,d4
	lsl.l	#1,d0
	roxl.b	#1,d3
	lsl.l	#1,d0
	roxl.b	#1,d2
	lsl.l	#1,d0
	roxl.b	#1,d1
	lsl.l	#1,d0
	roxl.b	#1,d4
	lsl.l	#1,d0
	roxl.b	#1,d3
	lsl.l	#1,d0
	roxl.b	#1,d2
	lsl.l	#1,d0
	roxl.b	#1,d1
	lsl.l	#1,d0
	roxl.b	#1,d4
	lsl.l	#1,d0
	roxl.b	#1,d3
	lsl.l	#1,d0
	roxl.b	#1,d2
	lsl.l	#1,d0
	roxl.b	#1,d1
	lsl.l	#1,d0
	roxl.b	#1,d4
	lsl.l	#1,d0
	roxl.b	#1,d3
	lsl.l	#1,d0
	roxl.b	#1,d2
	lsl.l	#1,d0
	roxl.b	#1,d1
	not.b	d1
	not.b	d2
	not.b	d3
	not.b	d4
	move.b	d1,(a1)+
	move.b	d2,(a2)+
	move.b	d3,(a3)+
	move.b	d4,(a4)+
	dbra	d7,fplp
	movem.l (a7)+,d0-d7/a0-a6
	rts

	xdef	_fplanegen
_fplanegen:
	movem.l	d0-d7/a0-a6,-(a7)
	move.l	64(a7),a0
	move.l	68(a7),a1
	move.l	72(a7),a2
	move.l	76(a7),a3
	move.l	80(a7),a4
	move.l	84(a7),d7
 	subq.w	#1,d7
fpglp:	move.b	(a1)+,d1
	not.b	d1
	move.b	(a2)+,d2
	not.b	d2
	move.b	(a3)+,d3
	not.b	d3
	move.b	(a4)+,d4
        not.b	d4
     	lsl.b	#1,d4
	roxl.l	#1,d0
	lsl.b	#1,d3
	roxl.l	#1,d0
	lsl.b	#1,d2
	roxl.l	#1,d0
	lsl.b	#1,d1
	roxl.l	#1,d0
     	lsl.b	#1,d4
	roxl.l	#1,d0
	lsl.b	#1,d3
	roxl.l	#1,d0
	lsl.b	#1,d2
	roxl.l	#1,d0
	lsl.b	#1,d1
	roxl.l	#1,d0
     	lsl.b	#1,d4
	roxl.l	#1,d0
	lsl.b	#1,d3
	roxl.l	#1,d0
	lsl.b	#1,d2
	roxl.l	#1,d0
	lsl.b	#1,d1
	roxl.l	#1,d0
     	lsl.b	#1,d4
	roxl.l	#1,d0
	lsl.b	#1,d3
	roxl.l	#1,d0
	lsl.b	#1,d2
	roxl.l	#1,d0
	lsl.b	#1,d1
	roxl.l	#1,d0
     	lsl.b	#1,d4
	roxl.l	#1,d0
	lsl.b	#1,d3
	roxl.l	#1,d0
	lsl.b	#1,d2
	roxl.l	#1,d0
	lsl.b	#1,d1
	roxl.l	#1,d0
     	lsl.b	#1,d4
	roxl.l	#1,d0
	lsl.b	#1,d3
	roxl.l	#1,d0
	lsl.b	#1,d2
	roxl.l	#1,d0
	lsl.b	#1,d1
	roxl.l	#1,d0
     	lsl.b	#1,d4
	roxl.l	#1,d0
	lsl.b	#1,d3
	roxl.l	#1,d0
	lsl.b	#1,d2
	roxl.l	#1,d0
	lsl.b	#1,d1
	roxl.l	#1,d0
     	lsl.b	#1,d4
	roxl.l	#1,d0
	lsl.b	#1,d3
	roxl.l	#1,d0
	lsl.b	#1,d2
	roxl.l	#1,d0
	lsl.b	#1,d1
	roxl.l	#1,d0
	move.l	d0,(a0)+
	dbra	d7,fpglp
	movem.l (a7)+,d0-d7/a0-a6
	rts
