*                         Scroll-Text
* 
*                von Roger Fischlin 12/1988
*
*                (c) Kickstart-Amiga-Magazin 
*



	incdir	"vd0:include/"
	include	exec/exec_lib.i
	include	intuition/intuition.i
	include	intuition/intuition_lib.i
	include	graphics/graphics_lib.i
	include	libraries/dos.i
	include	libraries/dos_lib.i
	include	graphics/text.i



	
	lea	int_name(pc),a1	; Intuition-Library
	CALLEXEC 	OpenLibrary		; öffnen
	tst.l	d0
	beq	quit		
	move.l	d0,_IntuitionBase	
	moveq	#0,d0		
	lea	graf_name(pc),a1	; Graphics-Library
	CALLEXEC 	OpenLibrary		; öffnen
	tst.l	d0
	beq	quit
	move.l	d0,_GfxBase
	lea	NewScreen(pc),a0	; Screen öffnen
	CALLINT	OpenScreen		
	tst.l	d0
	beq	quit
	move.l	d0,Screen		
	lea	NewWindow(pc),a0	; Window öffnen	
	CALLINT	OpenWindow		; (dadurch wird der Screen
	tst.l	d0		;  gelöscht !)
	beq	closescr
	move.l	d0,Window	

	lea.l	Font(pc),a0		;Zeiger auf TOPAZ-80 holen
	CALLGRAF	OpenFont
	move.l	d0,FONT



	lea.l	TEXT,a5		; Scroll-Text	
	moveq.l	#0,d5		; Scroll-Zähler (0-7)
	
R1	and.l	#$7,d5
	bne	R4		; neuer Buchstabe fällig ?
	move.l	FONT,a2
	move.l	34(a2),a2		; Zeiger auf Font-Daten
	add.l	#7*$c0,a2		; unterste Zeile der Zeichendaten
	moveq.l	#0,d0
R6	move.b	(a5)+,d0		; Nächster Buchstabe
	bne	R5		; Wenn letzter, wieder von vorne
	lea.l	TEXT,a5		; anfangen
	bra	R6
R5	cmp.b	#$7f,d0
	bls	R9
	sub.b	#$20,d0
R9	sub.b	#$20,d0		; Zeiger auf Font-Daten des Buchstaben
	add.l	d0,a2		; richten
R4	or.b	#$8,d5		; Scroll-Zähler um 8 erhöhen, da Daten
				; in Byteform vorliegt, rolx aber nur
				; Word zuläßt !
	move.l	Screen,a1		; Zeiger auf Bitplane 1
	move.l	$c0(a1),a0
	add.l	#8*40,a0		; Zeiger auf unterste Zeile des Textes 
				; richten		
	move.l	#7,d1		; 7+1 Zeilen scrollen
	move.l	a2,a1
R7	move.w	$dff006,d0		; DMA-Position abwarten
	lsr.w	#8,d0		; Y-Werte herausfiltern
	cmp.b	#$50,d0
	bls.s	R7
R2	move.l	#19,d0		; jeweils 19+1 Bytes scrollen
	moveq	#0,d2		; Bit des reinscollenden Zeichens
	move.b	(a1),d2		; ermitteln
	roxl.w	#1,d2
	roxl.w	d5,d2
	sub.l	#$c0,a1
R8	roxl.w	-(a0)		; Bytes scrollen
	dbra	d0,R8		
	dbra	d1,R2
	move.l	#$e00,d0		; kurze Pause
R3	dbra	d0,R3
	addq	#1,d5
	btst	#6,$bfe001		; Maustaste gedrückt ?
	bne	R1
	


closewin	move.l	Window,a0		; Window schließen
	CALLINT	CloseWindow
closescr	move.l	Screen,a0		; Screen schließen
	CALLINT	CloseScreen
quit	moveq.l	#0,d0
	rts

int_name	INTNAME
graf_name	GRAFNAME
NewScreen	dc.w	0,0		; NewScreen-Struktur		
	dc.w	320,50
	dc.w	1	
	dc.b	0,1	
	dc.w	0	
	dc.w	CUSTOMSCREEN	
	dc.l	0,0,0	
NewWindow	dc.w	0,0		; NewWindow-Struktur             
	dc.w	320,50
	dc.b	0,1	
	dc.l	GADGETDOWN!DISKINSERTED!DISKREMOVED
        	dc.l    	SMART_REFRESH!ACTIVATE!RMBTRAP!BORDERLESS
	dc.l	0
	dc.l	0	
	dc.l	0
Screen	ds.l	1
	dc.l	0
	dc.w	100,20,640,200    
	dc.w	CUSTOMSCREEN	   

_IntuitionBase	dc.l	0	
_GfxBase	dc.l	0		
Window	dc.l	0
Font	dc.l	fontname		; Font-Struktur zum Öffnen
	dc.w	TOPAZ_EIGHTY
	dc.b	FS_NORMAL,FPF_ROMFONT
fontname	dc.b	"topaz.font",0
FONT	dc.l	0
* eigentlicher Scroll-Text, mit 0 terminiert !
TEXT	dc.b	"KICKSTART - Das Amiga-Magazin für den Computer-Freak, "
	dc.b	"der mehr über seine Wundermaschine wissen möchte . Für"
	dc.b	" den Kickstartleser ist nun auch ein Scroll-Text kein "
	dc.b	"Geheimnis mehr ......               "
	dc.b	0




