

; ScreenText (v1.0)  
; Written on 13/02/91 at 20:44 00 by Nekron.

; Used first on the crack of Great Courts II!


	INCDIR	"df1:"

************************* Library-Funktionen *********************

Execbase=	4
OldopenLib=	-408

************************* Definitionen ***************************

; Keine Definitionen!

************************* Hauptprogramm **************************

		SECTION	Great_C_2,CODE_C

Begin
	movem.l	a0-a6/d0-d7,-(SP)
	bsr	ShowTx
	movem.l	(SP)+,a0-a6/d0-d7
	rts

ShowTx
	bsr	Install
	bsr	TxOut
	clr.b	$bfec01
keyloop
	move.b	$bfec01,d0
	tst.b	d0
	beq	keyloop

	bsr	Reset
	rts

*******************
* Installierungen *
*******************

Install

	move.l	(Execbase).w,a6
	lea	GfxName,a1
	jsr	OldopenLib(a6)
	move.l	d0,Gfxbase

	lea	$dff000,a6
	move.w	2(a6),d0
	move.w	$1c(a6),d1
	bset	#15,d0
	bset	#15,d1
	move.w	d0,OldDMACON
	move.w	d1,OldIRQENA
	move.w	#$7fff,$96(a6)
	move.w	#$7fff,$9a(a6)

	lea	Bitplane,a0
	lea	BitplaneEnd,a1
	lea	Planes,a2
	move.l	a0,d0
	move.w	d0,6(a2)
	swap	d0
	move.w	d0,2(a2)
clrloop
	clr.w	(a0)+
	cmpa.l	a1,a0
	blo	clrloop
		
	move.w	#%1000001110000000,$96(a6)
	move.l	#CopperList,$80(a6)
	clr.w	$88(a6)
	rts

****************************
* Rücksetzen der Parameter *
****************************

Reset
	move.w	OldDMACON,$96(a6)
	move.w	OldIRQENA,$9a(a6)

	move.l	Gfxbase,a2
	move.l	38(a2),$80(a6)
	clr.w	$88(a6)	
	rts

***************
* Textausgabe *
***************

TxOut
	lea	Text,a0
	lea	Bitplane,a1
	lea	Charset,a2
	moveq	#40,d2
txloop
	cmpi.b	#0,d2
	bne	txout2
	beq	addline
txout2
	clr.w	d0
	move.b	(a0)+,d0
	cmpi.b	#$ff,d0
	beq	txend
	cmpi.b	#$0a,d0
	beq	addline
	bsr	SetChar
	bra	txloop
addline
	adda.l	#40*8,a1
	add.w	d2,a1
	moveq	#40,d2
	bra	txloop
txend
	rts

******************
* Zeichenausgabe *
******************

SetChar
	cmpi.b	#" ",d0
	blo	setspace
	cmpi.b	#"Z",d0
	blo	setnorm
setspace
	clr.l	d0
	bra	setokay
setnorm
	subi.b	#$20,d0
	asl.w	#3,d0
setokay
	clr.l	d1
	moveq	#8-1,d7
charloop
	move.b	(a2,d0.w),(a1,d1.w)
	addi.w	#1,d0
	addi.w	#40,d1
	dbf	d7,charloop
	add.w	#1,a1
	sub.b	#1,d2
	rts

************************* Daten und CopperList *******************

GfxName		dc.b	"graphics.library",0
		EVEN

Gfxbase		ds.l	1

OldDMACON	ds.w	1
OldIRQENA	ds.w	1

CopperList	dc.w	$008e,$2c81,$0090,$27c1
		dc.w	$0092,$0038,$0094,$00d0
		dc.w	$0108,$0000,$010a,$0000
		dc.w	$0102,$0000,$0104,$0000
		dc.w	$0100,$1200
Planes		dc.w	$00e0,$0000,$00e2,$0000
		dc.w	$0180,$0000,$0182,$088a

		dc.w	$0,$0b

		SECTION	Bitplane,BSS_C

Bitplane	ds.b	40*256
BitplaneEnd
		EVEN

************************* Externe Dateien ************************

		SECTION	Data,DATA


Text		INCBIN	"Code/ScreenText"
		dc.b	$ff
		EVEN

Charset		INCBIN	"Gfx/FontObj"
		EVEN



