
scr=$7a000
struc=$7d000
rastport=struc+100

setupsystem:

bsr getgfx
bsr cleanitdown


move.w #8000-1 ,d0
move.l #scr ,a0
slet: move.b #0 ,(a0)+
dbra d0 ,slet

move.l #scr ,a0
move.l a0 ,struc+8
move.l #struc ,a0
moveq #1 ,d0
move.l #320 ,d1
move.l #200 ,d2
move.l gfxbase ,a6
jsr -390(a6)
move.l #rastport ,a1
jsr -198(a6)
move.l #struc,rastport+4

move.l #copper0,newcop
bsr changecop

;--DEMO

move=-240
draw=-246
setapen=-342

move.l #rastport,a1

;/////// my demo!!! ///////
demo:
move.l	#end,d3
move.l	#text,d2
sub.l	#1,d3
move.l	d2,textpos

oloop:
btst	#6,$bfe001
bne	cnton
rts
cnton:
move.l	#6,d2
move.l	#charset,a2
move.l	textpos,a4
clr.l	d0
move.b	(a4),d0
;--SPECIAL FUNCTIONS--
cmp.b	#'z',d0
beq	changesspeed
cmp.b	#'r',d0
beq	scrollonoff
cmp.b	#'h',d0
beq	horizscroll
cmp.b	#'a',d0
beq	changexsize
cmp.b	#'b',d0
beq	changeysize
cmp.b	#'n',d0
beq	newline
cmp.b	#' ',d0
beq	space
cmp.b	#'l',d0
beq	scroll
cmp.b	#'x',d0
beq	changex
cmp.b	#'y',d0
beq	changey
cmp.b	#'s',d0
beq	changespeed
cmp.b	#'p',d0
beq	pause

cmpi	#0,speed
beq	nopause
clr.l	d1
move	speed,d1
mulu	#5,d1
syncloop:
cmpi.b	#255,$dff006
bne	syncloop
dbra	d1,syncloop
;jsr	updatecop
nopause:

sub	#33,d0
mulu	#28,d0
add	d0,a2
add.l	#1,textpos

iloop:
clr.l	d0
clr.l	d1
move.b	(a2)+,d0
muls	xsz,d0
divs	#3,d0
add.w	x,d0
cmp.w	#256,d0
blt	b1
subi.l	#2,textpos
jmp	newline
b1:
move.b	(a2)+,d1
muls	ysz,d1
divs	#3,d1
add.w	y,d1
jsr	move(a6)
move.b	(a2)+,d0
muls	xsz,d0
divs	#3,d0
add.w	x,d0
cmpi.w	#256,d0
blt	b2
subi.l	#2,textpos
jmp	newline
b2:
move.b	(a2)+,d1
muls	ysz,d1
divs	#3,d1
add	y,d1
jsr	draw(a6)
dbra	d2,iloop

canc:
cmpi	#'SS',scrollf
bne	cnyt
jsr	onehoriz
;rts
jmp	cancel

cnyt:
clr.l	d0
move.w	xsz,d0
add	#4,x
add	d0,x

cancel:
cmp.l	textpos,d3
bge    	oloop
rts

cls:
move.l	#7999,d0
move.l	#scr,a0
cls1:
move.b	#0,(a0)+
dbra	d0,cls1
rts

;/////// my demo's over. //


copper0:dc.w	$0100,$1200

	dc.w	$008e,$2c81
	dc.w	$0090,$f4c1
	dc.w 	$0092,$38
	dc.w	$0094,$d0

	dc.w	$0108,$0000
	dc.w	$010a,$0000

	dc.w	$00e0,$0007
	dc.w	$00e2,$a000

	dc.w	$0180,$a00
	dc.w	$0182,$f00
one:	dc.w	$2c01,$ff00
	dc.w	$0180,$aaa
	dc.w	$0182,$fff
two:	dc.w	$5f01,$ff00
	dc.w	$180,$00a
	dc.w	$182,$00f
three:	dc.w	$6001,$ff00
	dc.w	$180,$aaa
	dc.w	$182,$fff
four:	dc.w	$6101,$ff00
	dc.w	$180,$a00
	dc.w	$182,$f00

dc.w $ffff,$fffe

;*** gfx ***
gfxbase:	dc.l	0
gfxname:	dc.b	'graphics.library',0,0

getgfx:
	move.l	4	,a6
	move.l	#gfxname,a1
	jsr	-408(a6)
	move.l	d0	,gfxbase
rts

;*** change copper list ***

newcop: dc.l 0
;***
changecop:
	move.l	gfxbase	,a0
	move.l	newcop	,50(a0)
rts

;*********

forbid =-132
oldcopper:	dc.l 0

cleanitdown:
move.l 4,a6
jsr	-132(a6)
rts

charset:
dc.b	1,0,1,2,1,3,1,3,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0;!
dc.b	1,0,1,1,2,0,2,1,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0;"
dc.b	1,0,1,3,2,0,2,3,0,1,3,1,0,2,3,2,1,0,1,0,1,0,1,0,1,0,1,0;#
dc.b	0,0,3,0,0,0,0,2,1,0,1,3,0,2,3,2,3,2,3,3,0,3,3,3,2,0,2,3;$
dc.b	0,3,3,0,0,0,0,0,3,3,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0;%
dc.b	0,0,0,3,0,0,2,3,2,0,2,3,3,0,3,1,0,0,0,0,0,0,0,0,0,0,0,0;&
dc.b	1,0,1,1,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0;'
dc.b	1,0,0,1,0,1,0,2,0,2,1,3,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0;(
dc.b	2,0,3,1,3,1,3,2,3,2,2,3,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0;)
dc.b	1,0,3,0,0,2,1,0,1,0,1,3,0,2,3,2,0,2,0,3,1,0,1,0,1,0,1,0;AF
dc.b	0,0,2,0,0,0,0,1,1,0,1,1,0,1,2,1,1,1,1,2,2,1,2,2,0,2,2,2;SS
dc.b	1,3,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2;,
dc.b	0,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2;-
dc.b	1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,3;.
dc.b	0,3,3,0,3,0,3,0,3,0,3,0,3,0,3,0,3,0,3,0,3,0,3,0,3,0,3,0;/
dc.b	0,0,3,0,3,0,3,3,0,3,3,3,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0;0
dc.b	1,0,1,3,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0;1
dc.b	0,0,3,0,3,0,3,2,0,2,3,2,0,2,0,3,0,3,3,3,0,0,0,0,0,0,0,0;2
dc.b	0,0,3,0,3,0,3,3,0,3,3,3,1,2,3,2,0,0,0,0,0,0,0,0,0,0,0,0;3
dc.b	0,0,0,2,0,2,3,2,3,0,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0;4
dc.b	0,0,3,0,0,0,0,2,0,2,3,2,3,2,3,3,0,3,3,3,0,0,0,0,0,0,0,0;5
dc.b	0,0,3,0,0,0,0,3,0,2,3,2,3,2,3,3,0,3,3,3,0,0,0,0,0,0,0,0;6
dc.b	0,0,3,0,0,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0;7
dc.b	0,0,3,0,3,0,3,3,0,0,0,3,0,2,3,2,0,3,3,3,0,0,0,0,0,0,0,0;8
dc.b	0,0,3,0,0,0,0,2,0,2,3,2,3,0,3,3,0,0,0,0,0,0,0,0,0,0,0,0;9
dc.b	1,0,1,0,1,3,1,3,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0;:
dc.b	0,1,1,3,1,3,3,0,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1;Amiga
dc.b	3,0,0,2,0,2,3,3,3,0,3,0,3,0,3,0,3,0,3,0,3,0,3,0,3,0,3,0;>
dc.b	0,1,3,1,0,2,3,2,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1;=
dc.b	0,0,3,2,0,3,3,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0;>
dc.b	0,0,3,0,3,0,3,1,0,1,3,1,0,1,0,2,0,2,3,2,1,3,2,3,0,0,0,0;?
dc.b	0,0,3,3,1,0,3,2,0,1,2,3,0,3,3,0,0,2,2,0,1,3,3,1,0,0,0,0;XX
dc.b	0,0,3,0,0,0,0,3,3,0,3,3,0,2,3,2,0,0,0,0,0,0,0,0,0,0,0,0;A
dc.b	0,0,0,3,0,0,3,0,3,0,3,1,3,1,2,1,2,1,3,2,3,2,3,3,0,3,3,3;B
dc.b	0,0,3,0,0,0,0,3,0,3,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0;C
dc.b	0,0,2,0,2,0,3,1,3,1,3,2,3,2,2,3,0,3,2,3,0,0,0,3,0,0,0,0;D
dc.b	0,0,3,0,0,0,0,3,0,2,2,2,0,3,3,3,0,0,0,0,0,0,0,0,0,0,0,0;E
dc.b	0,0,3,0,0,0,0,3,0,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0;F
dc.b	0,0,3,0,0,0,0,3,0,3,3,3,3,2,1,2,3,2,3,3,0,0,0,0,0,0,0,0;G
dc.b	0,0,0,3,0,2,3,2,3,0,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0;H
dc.b	1,0,1,3,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0;I
dc.b	3,0,3,3,3,3,0,3,0,3,0,2,3,0,3,0,3,0,3,0,3,0,3,0,3,0,3,0;J
dc.b	0,0,0,3,0,2,3,0,0,2,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0;K
dc.b	0,0,0,3,0,3,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0;L
dc.b	0,0,0,3,0,0,1,1,1,1,3,0,3,0,3,3,0,0,0,0,0,0,0,0,0,0,0,0;M
dc.b	0,0,0,3,0,0,3,3,3,0,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0;N
dc.b	0,0,3,0,3,0,3,3,3,3,0,3,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0;O
dc.b	0,0,3,0,3,0,3,2,0,0,0,3,0,2,3,2,0,0,0,0,0,0,0,0,0,0,0,0;P
dc.b	0,0,3,0,3,0,3,3,0,0,0,3,0,3,3,3,2,2,3,3,0,0,0,0,0,0,0,0;Q
dc.b	0,0,3,0,0,0,0,3,0,2,3,2,3,0,3,2,0,2,3,3,0,0,0,0,0,0,0,0;R
dc.b	0,0,3,0,0,0,0,2,0,2,3,2,3,2,3,3,0,3,3,3,0,0,0,0,0,0,0,0;S
dc.b	0,0,3,0,1,0,1,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0;T
dc.b	0,0,0,3,0,3,3,3,3,0,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0;U
dc.b	0,0,1,3,1,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0;V
dc.b	0,0,0,3,0,3,1,2,1,2,3,3,3,0,3,3,0,0,0,0,0,0,0,0,0,0,0,0;W
dc.b	0,0,3,3,3,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0;X
dc.b	0,0,1,2,0,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0;Y
dc.b	0,0,3,0,0,3,3,0,0,3,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0;Z
dc.b	0,0,3,0,0,0,0,3,0,2,3,2,1,0,1,3,1,3,3,3,0,0,0,0,0,0,0,0;Æ
dc.b	0,0,3,0,0,0,0,3,0,3,3,0,3,0,3,3,0,3,3,3,0,0,0,0,0,0,0,0;Ø
dc.b	0,1,3,1,2,0,1,0,0,2,3,2,3,1,3,3,0,1,0,3,1,0,1,0,1,0,1,0;Å

xsz:	dc.w	5

ysz:	dc.w	9

x:	dc.w	0

y:	dc.w	0

textpos:	dc.l	0

speed:	dc.w	0

scrollf:	dc.w	'AF'

scs:	dc.w	6

even

changexsize:
clr.l	d0
addi	#1,a4
move.b	(a4),d0
move.w	d0,xsz
addi.l	#2,textpos
jmp	cancel
changeysize:
clr.l	d0
addi	#1,a4
move.b	(a4),d0
move.w	d0,ysz
addi.l	#2,textpos
jmp	cancel

newline:
clr.l	d4
move.w	ysz,d4
add	#4,d4
addi.w	d4,y
move.w	#0,x
addi.l	#1,textpos
jmp	cancel

space:
addi.l	#1,textpos
jmp	canc

scroll:
move.w	#0,x
add.l	#1,textpos
clr.l	d6
move.w	ysz,d6
add	#3,d6
move.l	#1989,d0

oloopsc:
move.l	#scr,a4
move.l	a4,a5
add.l	#40,a5
move.l	d0,d5

iloopsc:
move.l	(a5),(a4)
addi.l	#4,a5
addi.l	#4,a4
dbra	d5,iloopsc

lkj:
cmpi.b	#255,$dff006
bne	lkj

dbra	d6,oloopsc
jmp	cancel

scrollonoff:
addi.l	#1,textpos
cmpi	#'SS',scrollf
bne	notss
move	#'AF',scrollf
jmp	cancel
notss:
move	#'SS',scrollf
jmp	cancel

changex:
addi.l	#1,textpos
move.l	textpos,a5
clr.l	d0
move.b	(a5),d0
move.w	d0,x
addi.l	#1,textpos
jmp	cancel

changey:
addi.l	#1,textpos
move.l	textpos,a5
clr.l	d0
move.b	(a5),d0
move.w	d0,y
addi.l	#1,textpos
jmp	cancel

changespeed:
addi.l	#1,textpos
clr.l	d0
move.l	textpos,a5
move.b	(a5),d0
move.w	d0,speed
addi.l	#1,textpos
jmp	cancel

pause:
addi.l	#1,textpos
move.l	textpos,a0
clr.l	d0
move.b	(a0),d0
mulu	#5,d0
pauseloop:
cmpi.b	#255,$dff006
bne	pauseloop
dbra	d0,pauseloop
addi.l	#1,textpos
jmp	cancel

horizscroll:
addi.l	#1,textpos
clr.l	d0
clr.l	d1
move	y,d0
mulu	#40,d0
addi.l	#scr,d0
move.l	#15,d2
hsoloop:
cmpi.b	#255,$dff006
bne	hsoloop
move.l	d0,a0
move	ysz,d1
mulu	#40,d1
hsiloop:
lsl.b	#1,(a0)+
dbra	d1,hsiloop
dbra	d2,hsoloop
jmp	cancel

onehoriz:
clr.l	d0
clr.l	d1
clr.l	d6
move	scs,d6
move	y,d0
mulu	#40,d0
addi.l	#scr,d0
move	xsz,d1
addi	#3,d1
clr.l	d2
move	ysz,d2
mulu	#40,d2
add.l	d2,d0
addi.l	#40,d0
clr	d2

hs1loloop:	
btst	d6,$dff006
bne	hs1loloop
oh:
btst	d6,$dff006
beq	oh
move.l	d0,a0
move	ysz,d2
move.l	d2,d5
mulu	#20,d2
addi	#20,d2
move.l	a0,a5
sureloop:
bclr	#7,(a5)
subi.l	#40,a5
dbra	d5,sureloop
hs1liloop:
roxl.w	 #1,(a0)
;btst	#7,(a0)
;beq	hs1c
;bset	#0,-1(a0)
;hs1c:
subi.l	#2,a0
dbra	d2,hs1liloop
dbra	d1,hs1loloop
rts

changesspeed:
addi.l	#1,textpos
clr.l	d0
move.l	textpos,a0
move.b	(a0),d0
move.w	d0,scs
addi.l	#1,textpos
jmp	cancel

updatecop:
;clr.l	d0
clr.l	d1
clr.l	d3
move	y,d3
move	ysz,d1
addi	#$2c,d3
divu	#3,d1
move.b	d3,one
addi	d1,d3
move.b	d3,two
addi	d1,d3
move.b	d3,three
addi	d1,d3
move.b	d3,four
jsr	newcop
rts

text:
dc.b	"s",0
dc.b	"z",6,"b",32,"a",16,"nnn           r"
dc.b	"SWEINSTEIN IS PROUD TO PRESENT THE COOL"
dc.b	" DEMO OF HIS. IT CAN DO A LOT. "
DC.B	"rn          rJUST LOOK AT THIS! HORIZONTAL ANDrn"
dc.b	" VERTICALl  SOFTlSCROLLING!"
end:
