****************************************************************************
* System MOVIE SCROLL Routine (Devpac 2 Source)
*
* By Maurice `Digital Dictator` Wielink 
* Hondemanstraat 51, 1508 GA, Zaandam, The Netherlands

* My original Source was Lost so I have Disassembled my Executable Routine.
* Here it is...............
****************************************************************************

*------ PARAMETERS ------*

Speed	equ	17	 ; Scroll Speed
NrLines equ	12	 ; Nr of lines in Text

*------------------------*

	*************************
	movem.l	d0-d7/a0-a6,-(a7)
	BRA	LC358AE
*-----------------------------------------------*
LC3597E	MOVEQ.L	#NrLines-1,D6		;Nr of Text Lines -1
	LEA	LC35B1A(pc),A4		;Address of Text Data

LC35994	MOVEQ.L	#10,D0			;X Coordinate of Text
	MOVE.L	#266,D1			;Y Coordinate of Text
	MOVEA.L	LC35AE2,A1		;RastPort			
	JSR	-$F0(A6)		;Move
	MOVEA.L	LC35AE2,A1
	MOVEA.L	A4,A0			;Get Text Data
	MOVE.L	#38,D0			;Nr of Chars in Line
	JSR	-$3C(A6)		;Text

	MOVEQ.L	#18,D7			;Offset for Scroll Loop (19)
	MOVEQ.L	#0,D2			;x0 of area to scroll
	MOVEQ.L	#0,D3			;y0 of area to scroll
	MOVE.L	#320,D4			;x1 of area to scroll	
	MOVE.L	#276,D5			;y2 of area to scroll

LC359DA	MOVEA.L	LC35AE2,A1		;RastPort

LC359E0	BTST	#$A,$DFF016		;Right Button = Stop Scroll
	BEQ.s	LC359E0
	BTST	#6,$BFE001		;Left Button  = EXIT
	BEQ	LC35854
	MOVEQ.L	#0,D0			;No Vertical Scroll					
	MOVEQ.L	#1,D1			;Scroll Up (1 Pixel at the time)

LC35A04	CMPI.B	#$FE,$DFF006
	BNE.S	LC35A04
	JSR	-$18C(A6)		;Scroll Raster
	move.l	d7,-(a7)
	moveq.l	#Speed,d7		;Delay Value
	JSR	LC35A22(pc)		;Delay a Bit	
	move.l	(a7)+,d7
	DBF	D7,LC359DA		;Scroll It

	ADDA.L	#38,A4			;Next Line in text
	DBF	D6,LC35994		;Until all Lines are Done....

	move.l	#800,d7			;Delay Value
	jsr	LC35A22(pc)		;Wait a While.....

	BRA	LC35854			;......then EXIT	
*-----------------------------------------------*
LC358AE	lea	LC35AEE(pc),A1			;Intuition.lib Name
	MOVEQ	#0,D0
	MOVEA.L	4.W,A6				;execBase at A6
	JSR	-$228(A6)			;Open IntLib
	MOVE.L	D0,LC35B16
	BEQ	LC358A6

	lea	LC35B00(pc),A1
	MOVEQ	#0,D0
	JSR	-$228(A6)			;Open GfxLib
	MOVE.L	D0,LC35B12 
	BEQ	LC35898

	lea	LC35A76(pc),A0			;Screen Structure
	MOVEA.L	LC35B16,A6			;IntBase
	JSR	-$C6(A6)			;OpenScreen (320*276)
	MOVE.L	D0,LC35A96			;ScreenBase
	BEQ	LC3588A

	MOVEA.L	d0,A0				;ScreenBase at a0
	LEA	$2C(A0),A0			;Get ViewPort
	MOVE.L	A0,LC35AE6			;Screen Viewport

	LEA	LC35AEA(pc),A1			;CMap
	MOVEQ	#2,D0				;Nr of Colors
	MOVEA.L	LC35B12,A6			;GfxBase
	JSR	-$C0(A6)			;Load RGB4
	LEA	LC35AAE(pc),A0			;Window Structure
	MOVE.L	LC35A96,D0			;ScreenBase
	MOVE.L	D0,$1E(A0)			;Store ScrPTR in Window		
	MOVEA.L	LC35B16,A6			;IntBase
	JSR	-$CC(A6)			;OpenWindow
	MOVE.L	D0,LC35ADE			;Window Base
	BEQ	LC3587A

	MOVEA.L	d0,A0				;WindowBase at a0
	MOVE.L	$32(A0),LC35AE2			;WD_RastPort

	MOVEA.L	LC35B12,A6			;GfxBase
	MOVEA.L	LC35AE2,A1			;WD_RastPort
	MOVEQ.L	#1,D0				;Color in CMap
	JSR	-$156(A6)			;SetAPen

	MOVE.W	#$3A,$DFF096			;Remove Mouse Pointer
	MOVEA.L	4,A6				;ExecBase
	JSR	-$84(A6)			;Forbid
	MOVEA.L	LC35B12,A6			;GfxBase at a6
	bra	LC3597E				;START !!!
*-----------------------------------------------*
* QUIT
LC35854	MOVEA.L	4,A6				
	JSR	-$8A(A6)			;Permit
	JSR	LC35A3C(pc)			;FadeOut
	MOVE.W	#$803A,$DFF096			;Mouse Pointer Back
	MOVEA.L	LC35ADE,A0			;Window Base
	MOVEA.L	LC35B16,A6			;IntBase
	JSR	-$48(A6)			;Close Window
LC3587A	MOVEA.L	LC35A96,A0			;ScreenBase
	MOVEA.L	LC35B16,A6			;IntBase
	JSR	-$42(A6)			;CloseScreen
LC3588A	MOVEA.L	LC35B12,A1			;GfxBase
	MOVEA.L	4.W,A6				;ExecBase
	JSR	-$19E(A6)			;Close Library	
LC35898	MOVEA.L	LC35B16,A1			;IntBase
	MOVEA.L	4.W,A6 				;ExecBase
	JSR	-$19E(A6)			;Close Library
LC358A6	movem.l	(a7)+,d0-d7/a0-a6
	RTS					;and Exit !

*------- FADE OUT --------*

LC35A3C	MOVE.L	#$E,D7				;15 Values per Color
LC35A42	LEA	LC35AEA(pc),A1			;Get CMap
	SUBI.W	#$111,2(A1)			;Chance Color02 
	JSR	LC35A58(pc)			;Use Subroutine
	DBF	D7,LC35A42			
	RTS

LC35A58	MOVEA.L	LC35AE6,A0			;ViewPort
	MOVEQ	#2,D0				;Nr of Colors
	MOVEA.L	LC35B12,A6			;GfxBase
	JSR	-$C0(A6)			;LoadRGB4
	MOVE.L	D7,-(A7)
	moveq.l	#60,d7
	jsr	LC35A22(pc)
	MOVE.L	(A7)+,D7
	RTS

*-----------------------------------------------*
* DELAY ROUTINE
LC35A22	CMPI.B	#$FF,$DFF006
	BNE.S	LC35A22
	DBF	D7,LC35A22
	RTS
*-----------------------------------------------*
* NEWSCREEN STRUCTURE
		even
LC35A76:	dc.w	0,0,320,276	  ;Left, Top, Width, Height
		dc.w	1		  ;number of bitplanes
		dc.b	0,0		  ;detail , block pen
		dc.w	0,$f+$100	  ;Low-Res,CustomScreen+ScreenQuiet
		dc.l	DefaultFont,0,0,0

DefaultFont:	dc.l	FontName
		dc.w	8		;Size
		dc.b	0,0
FontName:	dc.b	'topaz.font',0

		even

* NEWWINDOW STRUCTURE
LC35AAE:	dc.w	0,0,320,276
		dc.b	0,0		;detail/block pen
		dc.l	0,$1000+$0800+$0100
		dc.l	0,0,0,0,0	
		dc.w	320,276,320,276,$f


LC35AEE		dc.b	'intuition.library',0
LC35B00 	dc.b	'graphics.library',0

		even
LC35A96 	dc.l	0			;ScreenBase
LC35AE6 	dc.l	0			;Screen ViewPort 
LC35ADE 	dc.l	0			;WindowBase
LC35AE2		dc.l	0			;WD_RastPort
LC35B16 	dc.l	0			;IntBase
LC35B12 	dc.l	0			;GfxBase
LC35AEA		dc.w	$000,$FFF		;CMAP (Black, White)

* The Text Data

LC35B1A	dc.b	'        Movie Scroll Routine          '
	dc.b	'                                      '
	dc.b	'              Coded by                '
	dc.b	'  Maurice `Digital Dictator` Wielink  '
	dc.b	'    for the Programming Section       '
 	dc.b	'     on the Wonderful and Best        '
	dc.b	'       Disk Magazine around           '
	dc.b	'                                      '
	dc.b	'             NEWSFLASH                '

	dc.b	'                                      '
	dc.b	'                                      '
	dc.b	'                                      '

;The
 end 

