	; Rutig mark av Johan Sanneblad 1990-03-30

	Section	gurkmos,code_c

;--------------------------------------------------------
	or.b	#%10000000,$bfd100
	and.b	#%10000111,$bfd100

	bsr	wait

	move.w	#$01a0,$dff096
	move.w	#$4000,$dff09a
	move.w	#$2200,$dff100
	move.w	#0,$dff102
	move.w	#0,$dff104
	move.w	#4,$dff108
	move.w	#4,$dff10a
	move.w	#$1c71,$dff08e
	move.w	#$f4d1,$dff090
	move.w	#$38d1,$dff090
	move.w	#$0030,$dff092
	move.w	#$00d8,$dff094
;--------------------------------------------------------
	lea.l	skarm,a0			; Initiera skarm...
	move.l	a0,d0
	lea.l	copper,a1
	addq	#2,a1
	moveq	#1,d1				; 2 Bitplan
 protin:	swap	d0
	move.w	d0,(a1)
	addq	#4,a1
	swap	d0
	move.w	d0,(a1)
	addq	#4,a1
	add.l	#364/8+4,d0
	dbra	d1,protin
;--------------------------------------------------------
	lea	sindata,a0
	move.l	#799,d7
Sopor	move.w	(a0),d0
	mulu	#48,d0
	move.w	d0,(a0)+
	dbf	d7,sopor
;--------------------------------------------------------
	lea.l	toning,a0
	lea.l	colors,a1
	move.w	#$1d07,d4
	move.w	#$fffe,d5
	move.w	#$0186,d6
	move.l	#172,d7
Lazarus	move.w	d4,(a0)+
	move.w	d5,(a0)+
	move.w	d6,(a0)+
	move.w	(a1)+,(a0)+
	add.w	#$0100,d4
	dbf	d7,lazarus
;--------------------------------------------------------
	lea.l	Skuggan,a0
	lea.l	Shadow,a1
	move.w	#$cc07,d4
	move.w	#$fffe,d5
	move.l	#59,d7
Plumpen	move.w	(a1)+,d0
	move.w	d4,(a0)+
	move.w	d5,(a0)+
	add.w	#$222,d0
	move.w	#$0182,(a0)+
	move.w	d0,(a0)+
	sub.w	#$444,d0
	cmp.w	#$f000,d0
	bhi.s	Nulls
	move.w	#$0184,(a0)+
	move.w	d0,(a0)+
NullsOK	add.w	#$222,d0
	move.w	#$0186,(a0)+
	move.w	d0,(a0)+
	add.w	#$0100,d4
	cmp.w	#$f407,d4
	bne.s	AllOK
	move.w	#$ffdf,(a0)+
	move.w	d5,(a0)+
	move.w	#$0007,d4
AllOK	dbf	d7,plumpen
	bra.s	AlLDone
;--------------------------------------------------------
Nulls	move.w	#$0,(a0)+
	bra.s	NullsOK
;--------------------------------------------------------
AllDone	lea.l	copper,a0
	move.l	a0,$dff080
	move.w	#$81c0,$dff096
;--------------------------------------------------------
Loop:	bsr	wait
	bsr	bufcopy
	bsr	scroll
	bsr	bufrens
	bsr	sinus

	btst	#6,$bfe001
	bne	loop
;--------------------------------------------------------
Quit:	move.l	$4,a6
	move.l	156(a6),a6
	move.l	38(a6),$dff080
	move.w	#$80e0,$dff096
	move.w	#$0400,$dff096
	move.w	#$c000,$dff09a
	rts
;--------------------------------------------------------
Wait:	move.l	$dff004,d0
	asr.l	#8,d0
	and.l	#$1ff,d0
	cmp.w	#300,d0
	bne	wait
	rts
;--------------------------------------------------------
Scroll:	tst.w	HaltBuffer
	beq.s	DoSkrol
	subq.w	#1,Haltbuffer
	rts

DoSkrol	moveq	#0,d0
	moveq	#0,d1

	lea.l	counter,a1
	cmp.w	#4,(a1)
	bne	blatte
	clr.w	(a1)
	lea.l	tecken,a1
	move.w	(a1),d1
	addq.w	#1,(a1)
	lea.l	blaha,a2
	clr.l	d4
	move.b	(a2,d1.w),d4
	cmp.b	#101,d4				; Ar texten slut?
	bne	Wrapp
	clr.w	(a1)
	move.b	#32,d4
Wrapp	cmp.b	#104,d4				; Skall vi HALTA?
	bne	Elefant
	move.w	#300,HaltBuffer
	move.b	#32,d4

Elefant:mulu	#2,d4				; Words, att observera
	lea.l	askopp,a1
	clr.l	d2
	and.w	#$ff,d4
	move.w	(a1,d4.w),d2
	moveq	#0,d3
	move.b	d2,d3
	lsl.l	#1,d3
	lsr.w	#8,d2
	mulu	#640,d2
	add.l	d3,d2				; Har e' positionen!

	lea.l	font,a1
	add.l	#40*48*2,a1
	add.l	d2,a1
	lea.l	fontbuffer,a2
	move.l	#15,d0				; Hojd = 16 linjer

Bok:	clr.w	(a2)
	add.l	#48,a2
Fjupp:	move.w	(a1),(a2)
	add.l	#40,a1
	add.l	#48,a2
	dbra	d0,fjupp

Blatte	btst	#6,$dff002
	bne	blatte
	lea.l	fontbuffer,a1
	add.l	#720,a1

	move.l	a1,$dff050
	move.l	a1,$dff054
	move.w	#0,$dff064
	move.w	#0,$dff066
	move.l	#$ffffffff,$dff044
	move.w	#$49f0,$dff040
	move.w	#$0002,$dff042
	move.w	#$03d8,$dff058
	lea.l	counter,a0
	addq.w	#1,(a0)
	rts
;-------------------------------------------------
; **** SINUS-SCROLLING ROUTINE BY J.S. -90/91 ****
;-------------------------------------------------
Sinus	btst	#14,$dff002
	bne.s	sinus
	lea.l	skarmbuffer,a0
	add.l	#0,a0
	lea.l	fontbuffer,a1
	add.l	#4,a1
	lea.l	sindata,a2
	moveq	#0,d0
	move.w	Sinpek,d0		; Sinusvardenas uppdatering
	add.l	d0,a2

	move.w	#46,$dff064
	move.w	#46,$dff062
	move.w	#46,$dff066
	move.w	#0,$dff042
	move.w	#$0dfc,$dff040

	moveq	#20,d1			; 24 words per linje

Deo 	bsr.s	cocos
	addq	#2,a0			; Oka x-pos med 1 word
	addq	#2,a1			; Gor likadant med buffern
	dbra	d1,deo

	cmp.w	#0,Sinpek
	bgt.s	Gungapa
;	move.w	#0,Sinpek
	move.w	#798,Sinpek
GungaPa	sub.w	#2,Sinpek		; Det ska ju gunga!
	rts

Cocos	btst	#14,$dff002
	bne.w	cocos			; D=A+B
	moveq	#15,d2			; 8 Blitt's per word
	move.l	#$8000,d3		; Masken Max

	move.w	#$0400,$dff096

Boll	move.w	(a2)+,d0
	lea	(a0,d0.w),a4
	move.l	a1,$dff050		; Figur
	move.l	a4,$dff04c		; Bakgrund
	move.l	a4,$dff054		; Destination
	move.w	d3,$dff044
	move.w	#$ffff,$dff046
	move.w	#15*64+1,$dff058
	ror.w	#1,d3
	nop
	nop				; Vanta på att blittern
	nop				; skall bli fardig.....
	nop
	nop				; Antalet NOP'ar
	nop				; ar EXAKT beraknade! ( 7 st.)
	nop
	dbra	d2,boll

	move.w	#$8400,$dff096

	rts
;--------------------------------------------------------
Bufcopy	btst	#14,$dff002
	bne	bufcopy				; D=A

	move.l	#Skarmbuffer,$dff050		; Buffer
	move.l	#Skarm,$dff054			; Skarm
	move.w	#0,$dff064
	move.w	#0,$dff066
	move.w	#$09f0,$dff040
	move.l	#$ffffffff,$dff044
	move.w	#0,$dff042
	move.w	#178*64+24,$dff058
	rts
;--------------------------------------------------------
Bufrens	btst	#14,$dff002
	bne.s	bufrens
	move.l	#skarmbuffer,$dff054		; Destination
	move.w	#0,$dff066
	move.w	#$0100,$dff040
	move.w	#0,$dff042
	move.w	#178*64+24,$dff058
	rts
;--------------------------------------------------------
Copper:	dc.w	$00e0,$0000
	dc.w	$00e2,$0000
	dc.w	$00e4,$0000
	dc.w	$00e6,$0000
	dc.w	$00e8,$0000
	dc.w	$00ea,$0000
	dc.w	$00ec,$0000
	dc.w	$00ee,$0000
	dc.w	$1c07,$fffe
	dc.w	$0108,$0004
	dc.w	$010a,$0004
	dc.w	$0100,$2200
	dc.w	$0102,$0056
	dc.w	$0180,$0000,$0182,$0777,$0184,$0fff,$0186,$0bbb
Toning	ds.l	173*2
	dc.w	$cb07,$fffe
	dc.w	$0180,$0005,$0182,$0777,$0184,$0fff,$0186,$0bbb
	dc.w	$0108,$ffa4
	dc.w	$010a,$ffa4

Skuggan	ds.l	60*4+1

	dc.w	$ffff,$fffe

Askopp:	dc.w	$0000
	dc.w	$0000
	dc.w	$0000
	dc.w	$0000
	dc.w	$0000
	dc.w	$0000
	dc.w	$0000
	dc.w	$0000
	dc.w	$0000
	dc.w	$0000
	dc.w	$0000
	dc.w	$0000
	dc.w	$0000
	dc.w	$0000
	dc.w	$0000
	dc.w	$0000
	dc.w	$0000
	dc.w	$0000
	dc.w	$0000
	dc.w	$0000
	dc.w	$0000
	dc.w	$0000
	dc.w	$0000
	dc.w	$0000
	dc.w	$0000
	dc.w	$0000
	dc.w	$0000
	dc.w	$0000
	dc.w	$0000
	dc.w	$0000
	dc.w	$0000
	dc.w	$0000
	dc.w	$0207 ; " "			; Rad,Pos,Skrollvarde
	dc.w	$010a ; !
	dc.w	$0000
	dc.w	$0000
	dc.w	$0000
	dc.w	$0000
	dc.w	$0000
	dc.w	$0203 ; '
	dc.w	$0204 ; (
	dc.w	$0205 ; )
	dc.w	$0206 ; Diskett
	dc.w	$0000
	dc.w	$010b ; ,
	dc.w	$0000
	dc.w	$0109 ; .
	dc.w	$0000 ; /
	dc.w	$0202 ; 0
	dc.w	$010d ; 1
	dc.w	$010e ; 2
	dc.w	$010f ; 3
	dc.w	$0110 ; 4
	dc.w	$0111 ; 5
	dc.w	$0112 ; 6
	dc.w	$0113 ; 7
	dc.w	$0200 ; 8
	dc.w	$0201 ; 9
	dc.w	$0000 ; :
	dc.w	$0000
	dc.w	$0000
	dc.w	$0000
	dc.w	$0000
	dc.w	$010c ; ?
	dc.w	$0000
	dc.w	$0000 ; A
	dc.w	$0001 ; B
	dc.w	$0002 ; C
	dc.w	$0003 ; D....
	dc.w	$0004
	dc.w	$0005
	dc.w	$0006
	dc.w	$0007
	dc.w	$0008
	dc.w	$0009
	dc.w	$000a
	dc.w	$000b
	dc.w	$000c
	dc.w	$000d
	dc.w	$000e
	dc.w	$000f
	dc.w	$0010
	dc.w	$0011
	dc.w	$0012
	dc.w	$0013
	dc.w	$0100
	dc.w	$0101
	dc.w	$0102
	dc.w	$0103
	dc.w	$0104 ; ....Y
	dc.w	$0105 ; Z
	dc.w	$0106 ; Å
	dc.w	$0107 ; Æ
	dc.w	$0108 ; Ø
;--------------------------------------------------------
Sindata	dc.w	160,160,160,160,160,160,160,160
	dc.w	159,159,159,159,159,158,158,158
	dc.w	157,157,157,156,156,156,155,155
	dc.w	154,154,153,153,152,152,151,151
	dc.w	150,149,149,148,148,147,146,145
	dc.w	145,144,143,142,142,141,140,139
	dc.w	138,137,137,136,135,134,133,132
	dc.w	131,130,129,128,127,126,125,124
	dc.w	123,122,121,120,119,117,116,115
	dc.w	114,113,112,111,109,108,107,106
	dc.w	105,104,102,101,100,99,97,96
	dc.w	95,94,93,91,90,89,88,86
	dc.w	85,84,83,81,80,79,77,76
	dc.w	75,74,72,71,70,69,67,66
	dc.w	65,64,63,61,60,59,58,56
	dc.w	55,54,53,52,51,49,48,47
	dc.w	46,45,44,43,41,40,39,38
	dc.w	37,36,35,34,33,32,31,30
	dc.w	29,28,27,26,25,24,23,23
	dc.w	22,21,20,19,18,18,17,16
	dc.w	15,15,14,13,12,12,11,11
	dc.w	10,9,9,8,8,7,7,6
	dc.w	6,5,5,4,4,4,3,3
	dc.w	3,2,2,2,1,1,1,1
	dc.w	1,0,0,0,0,0,0,0
	dc.w	0,0,0,0,0,0,0,0
	dc.w	1,1,1,1,1,2,2,2
	dc.w	3,3,3,4,4,4,5,5
	dc.w	6,6,7,7,8,8,9,9
	dc.w	10,11,11,12,12,13,14,15
	dc.w	15,16,17,18,18,19,20,21
	dc.w	22,23,23,24,25,26,27,28
	dc.w	29,30,31,32,33,34,35,36
	dc.w	37,38,39,40,41,43,44,45
	dc.w	46,47,48,49,51,52,53,54
	dc.w	55,56,58,59,60,61,63,64
	dc.w	65,66,67,69,70,71,72,74
	dc.w	75,76,77,79,80,81,83,84
	dc.w	85,86,88,89,90,91,93,94
	dc.w	95,96,97,99,100,101,102,104
	dc.w	105,106,107,108,109,111,112,113
	dc.w	114,115,116,117,119,120,121,122
	dc.w	123,124,125,126,127,128,129,130
	dc.w	131,132,133,134,135,136,137,137
	dc.w	138,139,140,141,142,142,143,144
	dc.w	145,145,146,147,148,148,149,149
	dc.w	150,151,151,152,152,153,153,154
	dc.w	154,155,155,156,156,156,157,157
	dc.w	157,158,158,158,159,159,159,159
	dc.w	159,160,160,160,160,160,160,160
	dc.w	160,160,160,160,160,160,160,160
	dc.w	159,159,159,159,159,158,158,158
	dc.w	157,157,157,156,156,156,155,155
	dc.w	154,154,153,153,152,152,151,151
	dc.w	150,149,149,148,148,147,146,145
	dc.w	145,144,143,142,142,141,140,139
	dc.w	138,137,137,136,135,134,133,132
	dc.w	131,130,129,128,127,126,125,124
	dc.w	123,122,121,120,119,117,116,115
	dc.w	114,113,112,111,109,108,107,106
	dc.w	105,104,102,101,100,99,97,96
	dc.w	95,94,93,91,90,89,88,86
	dc.w	85,84,83,81,80,79,77,76
	dc.w	75,74,72,71,70,69,67,66
	dc.w	65,64,63,61,60,59,58,56
	dc.w	55,54,53,52,51,49,48,47
	dc.w	46,45,44,43,41,40,39,38
	dc.w	37,36,35,34,33,32,31,30
	dc.w	29,28,27,26,25,24,23,23
	dc.w	22,21,20,19,18,18,17,16
	dc.w	15,15,14,13,12,12,11,11
	dc.w	10,9,9,8,8,7,7,6
	dc.w	6,5,5,4,4,4,3,3
	dc.w	3,2,2,2,1,1,1,1
	dc.w	1,0,0,0,0,0,0,0
	dc.w	0,0,0,0,0,0,0,0
	dc.w	1,1,1,1,1,2,2,2
	dc.w	3,3,3,4,4,4,5,5
	dc.w	6,6,7,7,8,8,9,9
	dc.w	10,11,11,12,12,13,14,15
	dc.w	15,16,17,18,18,19,20,21
	dc.w	22,23,23,24,25,26,27,28
	dc.w	29,30,31,32,33,34,35,36
	dc.w	37,38,39,40,41,43,44,45
	dc.w	46,47,48,49,51,52,53,54
	dc.w	55,56,58,59,60,61,63,64
	dc.w	65,66,67,69,70,71,72,74
	dc.w	75,76,77,79,80,81,83,84
	dc.w	85,86,88,89,90,91,93,94
	dc.w	95,96,97,99,100,101,102,104
	dc.w	105,106,107,108,109,111,112,113
	dc.w	114,115,116,117,119,120,121,122
	dc.w	123,124,125,126,127,128,129,130
	dc.w	131,132,133,134,135,136,137,137
	dc.w	138,139,140,141,142,142,143,144
	dc.w	145,145,146,147,148,148,149,149
	dc.w	150,151,151,152,152,153,153,154
	dc.w	154,155,155,156,156,156,157,157
	dc.w	157,158,158,158,159,159,159,159
	dc.w	159,160,160,160,160,160,160,160

Colors	DC.W $0FFF,$0EFE,$0DFD,$0CFC,$0BFB,$0AFA,$09F9,$08F8,$07F7,$06F6
	DC.W $05F5,$04F4,$03F3,$02F2,$01F1,$00F0,$01E0,$02D0,$03C0,$04B0
	DC.W $05A0,$0690,$0780,$0870,$0960,$0A50,$0B40,$0C30,$0D20,$0E10
	DC.W $0F00,$0F10,$0F20,$0F30,$0F40,$0F50,$0F60,$0F70,$0F80,$0F90
	DC.W $0FA0,$0FB0,$0FC0,$0FD0,$0FE0,$0FF0,$0EF1,$0DF2,$0CF3,$0BF4
	DC.W $0AF5,$09F6,$08F7,$07F8,$06F9,$05FA,$04FB,$03FC,$02FD,$01FE
	DC.W $00FF,$01EF,$02DF,$03CF,$04BF,$05AF,$069F,$078F,$087F,$096F
	DC.W $0A5F,$0B4F,$0C3F,$0D2F,$0E1F,$0F0F,$0E0F,$0D0F,$0C0F,$0B0F
	DC.W $0A0F,$090F,$080F,$070F,$060F,$050F,$040F,$030F,$020F,$010F
	DC.W $000F,$011F,$022F,$033F,$044F,$055F,$066F,$077F,$088F,$099F
	DC.W $0AAF,$0BBF,$0CCF,$0DDF,$0EEF,$0FFF,$0FED,$0FDC,$0FCA,$0FC8
	DC.W $0FB7,$0FA5,$0F93,$0F92,$0F80,$0E81,$0E81,$0D92,$0C93,$0BA4
	DC.W $09B5,$08B6,$07C7,$06D9,$06C9,$06C9,$06B9,$06A9,$06A9,$0698
	DC.W $0688,$0688,$0678,$0668,$0668,$0557,$0666,$0776,$0885,$0995
	DC.W $0994,$0AA3,$0BB3,$0CC2,$0DD2,$0EE1,$0EE1,$0FF0,$0EF0,$0DF0
	DC.W $0CF0,$0BF0,$0AF0,$09F0,$08F0,$07F0,$08F2,$09F3,$0AF5,$0BF6
	DC.W $0BF8,$0CF9,$0DFB,$0EFC,$0FFE,$0FFF,$0FDD,$0FBB,$0F99,$0F77
	DC.W $0F55,$0F33,$0F11,$0F00

Shadow	DC.W $0BBB,$0BBB,$0BBB,$0BBB,$0BBB,$0AAB,$0AAB,$0AAB,$0AAB,$0AAB
	DC.W $099A,$099A,$099A,$099A,$099A,$099A,$088A,$088A,$088A,$088A
	DC.W $0889,$0779,$0779,$0779,$0779,$0779,$0779,$0669,$0669,$0669
	DC.W $0668,$0668,$0558,$0558,$0558,$0558,$0558,$0558,$0448,$0448
	DC.W $0447,$0447,$0447,$0337,$0337,$0337,$0337,$0337,$0337,$0227
	DC.W $0226,$0226,$0226,$0226,$0116,$0116,$0116,$0116,$0116,$0116

Blaha:	dc.b	"YO! WELCOME TO THE ULTIMATE ASSEMBLER COURSE...    "
	dc.b	"THIS SINUS INTRO WAS ONLY WRITTEN TO SHOW YOU A "
	dc.b	"WAY TO PRODUCE FAST HIGH RESOLUTION SINUS SCROLLERS... "
	dc.b	"ANYWAY, THIS INTRO WAS WRITTEN BY * JOHAN SANNEBLAD *  h"
	dc.b	"IN 100 PERCENT ASSEMBLY CODE USING DEVPACK 2.14 (GENAM2)h ....." 
	dc.b	"..........................        e"
	even

Counter		dc.w	0
Tecken		dc.w	0
HaltBuffer	dc.w	0
Rakapp		dc.w	0
Sinpek		dc.w	0
Font		incbin	"df1:Binary/Intro.font"		; 40*48*3
And		dcb.w	64,$8000
Fontbuffer	ds.b	2304				; 48*15*3
Skarm		ds.b	364/8*256
Skarmbuffer	ds.b	12288
