		SECTION	Uno-Pixel,code_c

;		opt	c-

pheight		= 200
pwidth		= 40
psize		= pwidth*pheight
execbase	= 4
openlib		= -408
closelib	= -414

**************************************
fontheight	= 16
**************************************

run:				* no doubt or nodout
	move.l	$80,otrap0
	move.l	#prog,$80
	trap	#0
	move.l	otrap0,$80
	rts

prog
	movem.l	d0-d7/a0-a6,-(sp)
	bsr	init_music
	lea	$dff000,a5
	bsr	init_stuff
	bsr	clearsprites
	bsr	buildmulus
	bsr	setup
	move.l	execbase,a6
	clr.l	38(a6)
	lea	graphname(pc),a1
	moveq	#0,d0
	jsr	openlib(a6)
	tst.l	d0
	beq	quit
	move.l	d0,a1
	move.l	38(a1),oldcop
	jsr	closelib(a6)
	move	#$4000,intena(a5)
	move.l	$6c,oldl3
	move	intenar(a5),d0
	or	#$c000,d0

	move	d0,saveirq
	move	#%001111111111111,intena(a5)
	move.l	#newl3,$6c
	move	#$80,dmacon(a5)
	clr	copjmp1(a5)
	move.l	#newcop,cop1lch(a5)
	move	#$8080,dmacon(a5)
	clr.w	bltcon1(a5)
	move.l	#$ffffffff,bltafwm(a5)
	move	#$c010,intena(a5)
wait	
	btst	#6,$bfe001
	bne.s	wait
quit
	move	#$80,dmacon(a5)
	move.l	oldcop,cop1lch(a5)
	clr	copjmp1(a5)
	move	#$4000,intena(a5)
	move.l	oldl3,$6c
blitfinito
	btst	#14,dmaconr(a5)
	bne.s	blitfinito
	bsr	end_music
	move	#$80a0,dmacon(a5)
	move	saveirq,intena(a5)
	move	#$f,dmacon(a5)
	movem.l	(sp)+,d0-d7/a0-a6
	rte

newl3
	and	#$10,intreqr(a5)		
	beq.s	out
	movem.l d0-d7/a0-a6,-(sp)
	btst	#10,$dff016
	bne.s	.skip
	add	#1,scrolldelay
.skip
	move	#$400,dmacon(a5)
	bsr	mighty_fine
	bsr	logoshaker
	bsr	play
	move	#$8400,dmacon(a5)
	movem.l (sp)+,d0-d7/a0-a6
out	move	#$0070,intreq(a5)
	rte

buildmulus
	lea	sinetable,a0
buildloop
	move	(a0),d0
	mulu	#40,d0
	move	d0,(a0)+
	cmp.l	#stopsine,a0
	blt.s	buildloop
	rts

****************************************		

mighty_fine
	move.l	#buff1,d0
	move.l	#buff2,d1
	tst.w	display_count
	beq.s	usea
	exg.l	d0,d1
	move	#0,display_count
	bra.s	skipmove
usea
	move	#1,display_count	
skipmove
	move.l	d0,curscreen
	move.l	d1,newscreen
	move	d0,p6lo
	swap	d0
	move	d0,p6hi
	cmp.w	#0,scrolldelay
	beq.s	.skip
	sub	#1,scrolldelay
	move.b	#1,delay_flag
	bra.s	nohorizscroll
.skip
	move.b	#0,delay_flag
njw	btst	#14,dmaconr(a5)
	bne.s	njw
	move.l	#$ffffffff,bltafwm(a5)
	move	#0,bltamod(a5)
	move	#0,bltdmod(a5)			;ok
	move.l	#scrollzone+2,bltapth(a5)
	move.l	#scrollzone,bltdpth(a5)
	move	#$e9f0,bltcon0(a5)
	move	#(fontheight*64)+21,bltsize(a5)
	move	#$8400,dmacon(a5)
nohorizscroll
	btst	#14,dmaconr(a5)
	bne.s	nohorizscroll
	move	#$400,dmacon(a5)
	move	#$0dfc,bltcon0(a5)
	move	#$ffff,bltafwm(a5)
	move	#40,bltamod(a5)
	move	#38,bltbmod(a5)
	move	#38,bltdmod(a5)
	lea	scrollzone+2,a0
	move.l	curscreen,a3
	move.l	sineptr,a2
	move	#$8000,d6			;Mask in D6.
	moveq	#19,d7
dovert	
	move.l	a3,a1
	add	(a2)+,a1
	move	#$8400,dmacon(a5)
	
.wt
	btst	#14,dmaconr(a5)
	bne.s	.wt
	move	#$400,dmacon(a5)
	move.l	a0,bltapth(a5)
	move.l	a1,bltbpth(a5)
	move.l	a1,bltdpth(a5)
	move	d6,bltafwm(a5)
	move	#(fontheight*64)+1,bltsize(a5)
oksin1	
	ror	#1,d6
	bpl.s	dovert
	lea	2(a0),a0
	lea	2(a3),a3
	dbra	d7,dovert
	cmp.b	#0,delay_flag
	bne.s	nochar
	add	#2,pixelcount
	and	#$f,pixelcount
	bne.s	nochar	
	move.l	textptr,a0
	cmp.b	#$fe-32,(a0)
	bne.s	skipo
	move	#400,scrolldelay
	add.l	#1,a0
	move.l	a0,textptr
skipo
	cmp.b	#$ff,(a0)
	bne.s	notwrap
	move.l	#text,a0
notwrap	
	move.b	(a0)+,d0
	and	#$ff,d0
	lsl	#1,d0
	lea	font,a1	
	lea	(a1,d0),a1
	move.l	#scrollzone,a2
	moveq	#fontheight-1,d7
cloop	move	(a1),(a2)
	lea	120(a1),a1		;font layed out as straight line
	lea	42(a2),a2
	dbra	d7,cloop
	move.l	a0,textptr
nochar	btst	#14,dmaconr(a5)
	bne.s	nochar
	move	#$100,bltcon0(a5)
	move.l	newscreen,bltdpth(a5)
	move	#0,bltamod(a5)
	move	#0,bltdmod(a5)
	move	#(187*64)+20,bltsize(a5)
	add.l	#2,sineptr
	cmp.l	#endsine,sineptr
	blt.s	exit
	sub.l	#endsine-sinetable,sineptr
exit	rts

***************************************
graphname
	dc.b	'graphics.library',0
	even
gbase	dc.l	0
oldcop	dc.l	0
oldl3	dc.l	0
saveirq	dc.w	0
display_count	dc.w	0
otrap0	dc.l	0
sineptr	dc.l	sinetable
scrolldelay
	dc.w	0
delay_flag	dc.b	0
		even
pixelcount
	dc.w	0

setup
	move.l	#text,a0
loopu
	move.b	(a0),d0
	sub.b	#32,d0
	move.b	d0,(a0)+
	cmp.b	#$ff,(a0)
	bne.s	loopu
	rts

sinetable
	dc.w  0,0,0,0,0,0,0,1,1,1,1,2,2,2,3 
	dc.w  3,3,4,4,5,5,6,6,7,7,8,9,9,10,11 
	dc.w  11,12,13,14,15,15,16,17,18,19,20,21,22,23,24 
	dc.w  25,26,27,28,29,30,32,33,34,35,36,37,39,40,41 
	dc.w  42,44,45,46,48,49,50,52,53,55,56,57,59,60,62 
	dc.w  63,64,66,67,69,70,72,73,75,76,78,79,81,82,84 
	dc.w  85,86,88,89,91,92,94,95,97,98,100,101,103,104,106 
	dc.w  107,108,110,111,113,114,115,117,118,120,121,122,124,125,126 
	dc.w  128,129,130,131,133,134,135,136,137,138,140,141,142,143,144 
	dc.w  145,146,147,148,149,150,151,152,153,154,155,155,156,157,158 
	dc.w  159,159,160,161,161,162,163,163,164,164,165,165,166,166,167 
	dc.w  167,167,168,168,168,169,169,169,169,170,170,170,170,170,170 
	dc.w  170,170,170,170,170,170,170,169,169,169,169,168,168,168,167 
	dc.w  167,167,166,166,165,165,164,164,163,163,162,161,161,160,159 
	dc.w  159,158,157,156,155,155,154,153,152,151,150,149,148,147,146 
	dc.w  145,144,143,142,141,140,138,137,136,135,134,133,131,130,129 
	dc.w  128,126,125,124,122,121,120,118,117,115,114,113,111,110,108 
	dc.w  107,106,104,103,101,100,98,97,95,94,92,91,89,88,86 
	dc.w  85,84,82,81,79,78,76,75,73,72,70,69,67,66,64 
	dc.w  63,62,60,59,57,56,55,53,52,50,49,48,46,45,44 
	dc.w  43,41,40,39,37,36,35,34,33,32,30,29,28,27,26 
	dc.w  25,24,23,22,21,20,19,18,17,16,15,15,14,13,12 
	dc.w  11,11,10,9,9,8,7,7,6,6,5,5,4,4,3 
	dc.w  3,3,2,2,2,1,1,1,1,0,0,0,0,0,0
	dc.w  0,0,0,0 
endsine 
	dc.w  0,0,0,0,0,0,0,1,1,1,1,2,2,2,3 
	dc.w  3,3,4,4,5,5,6,6,7,7,8,9,9,10,11 
	dc.w  11,12,13,14,15,15,16,17,18,19,20,21,22,23,24 
	dc.w  25,26,27,28,29,30,32,33,34,35,36,37,39,40,41 
	dc.w  42,44,45,46,48,49,50,52,53,55,56,57,59,60,62 
	dc.w  63,64,66,67,69,70,72,73,75,76,78,79,81,82,84 
	dc.w  85,86,88,89,91,92,94,95,97,98,100,101,103,104,106 
	dc.w  107,108,110,111,113,114,115,117,118,120,121,122,124,125,126 
	dc.w  128,129,130,131,133,134,135,136,137,138,140,141,142,143,144 
	dc.w  145,146,147,148,149,150,151,152,153,154,155,155,156,157,158 
	dc.w  159,159,160,161,161,162,163,163,164,164,165,165,166,166,167 
	dc.w  167,167,168,168,168,169,169,169,169,170,170,170,170,170,170 
	dc.w  170,170,170,170,170,170,170,169,169,169,169,168,168,168,167 
	dc.w  167,167,166,166,165,165,164,164,163,163,162,161,161,160,159 
	dc.w  159,158,157,156,155,155,154,153,152,151,150,149,148,147,146 
	dc.w  145,144,143,142,141,140,138,137,136,135,134,133,131,130,129 
	dc.w  128,126,125,124,122,121,120,118,117,115,114,113,111,110,108 
	dc.w  107,106,104,103,101,100,98,97,95,94,92,91,89,88,86 
	dc.w  85,84,82,81,79,78,76,75,73,72,70,69,67,66,64 
	dc.w  63,62,60,59,57,56,55,53,52,50,49,48,46,45,44 
	dc.w  43,41,40,39,37,36,35,34,33,32,30,29,28,27,26 
	dc.w  25,24,23,22,21,20,19,18,17,16,15,15,14,13,12 
	dc.w  11,11,10,9,9,8,7,7,6,6,5,5,4,4,3 
	dc.w  3,3,2,2,2,1,1,1,1,0,0,0,0,0,0
	dc.w  0,0,0,0 
stopsine
***********************************************
init_stuff
	move.l	#piccy,d0
	move	d0,p1lo
	swap	d0
	move	d0,p1hi
	swap	d0
	add.l	#psize,d0
	move	d0,p2lo
	swap	d0
	move	d0,p2hi
	swap	d0
	add.l	#psize,d0
	move	d0,p3lo
	swap	d0
	move	d0,p3hi
	swap	d0
	add.l	#psize,d0
	move	d0,p4lo
	swap	d0
	move	d0,p4hi
	swap	d0
	add.l	#psize,d0
	move	d0,p5lo
	swap	d0
	move	d0,p5hi
	move.l	#buff1,d0
	move	d0,p6lo
	swap	d0
	move	d0,p6hi
	move.l	#logo,d0
	move	d0,l1lo
	swap	d0
	move	d0,l1hi
	swap	d0
	add.l	#(51*78),d0
	move	d0,l2lo
	swap	d0
	move	d0,l2hi
	swap	d0
	add.l	#(51*78),d0
	move	d0,l3lo
	swap	d0
	move	d0,l3hi
	rts

clearsprites
	lea	$dff144,a0
	moveq	#7,d7
loopydo
	clr.l	(a0)
	lea	4(a0),a0
	dbra	d7,loopydo
	rts

text	DC.B	"    INNER  CITY     ",$FE
	DC.B	"      PRESENTS      ",$FE
	DC.B	"    A NEW CRACK     ",$FE
	DC.B	" CODED IN 1990 BY "
	DC.B	" HOTWIRE/INNER CITY ",$FE
	DC.B	"MEGA-GREETS GOTO MOSES AND DR.DUBBS OF MODESTY "
	DC.B	"FOR BEING SUCH COOL DUDES .... NOW THE CREDITS OF "
	DC.B	"THE INTRO .... "
	DC.B	" CODING :"
	DC.B	" HOTWIRE/INNER CITY ",$FE
	DC.B	"  -  GRAPHICS : "
	DC.B	"  POD OF INNER CITY ",$FE 
	DC.B	"-  MUSIC : "
	DC.B	"UNCLE TOM & ZIPHOID ",$FE
	DC.B	"  AND IS TAKEN FROM "
	DC.B	"RAZOR 1911+S MUSIC DISK CALLED #DELICATE SOUNDS# "
	DC.B	"RIPPED BY HOTWIRE ..... "
	DC.B	"          "
	DC.B	"GREETINGS GOTO ALL "
	dc.b	" INNER CITY MEMBERS ",$FE
	dc.b	"- ALSO A SPECIAL "
	DC.B	"GREET GOES TO  "
	dc.b	"  JROK+90 OF MAYHEM ",$FE
	dc.b	"-  "
	dc.b	"A.D.S. OF INNER CITY",$FE
	DC.B	" -  "
	DC.B	"Q.E.D. OF INNER CITY",$FE
	dc.b	"  - "
	DC.B	" MYSTIK OF EXTREME  -  COUNT ZERO AND RASTER OF "
	DC.B	"ANTHROX  -  DR.C OF RED SECTOR  -  VANDAL AND STATIC "
	DC.B	"OF PARADOX  -  ICEMAN OF MODESTY  -  FIREFLY,ZARCHY,LAMESLUG"
	DC.B	" AND BANDASNATCH OF T.H.R.  -  POWERCUT OF MAYHEM  -  ZEUS OF "
	DC.B	"PUBLIC ENEMIES  -  DR.ZERONINE OF QUADLITE  -  "
	DC.B	"I AM SORRY IF I MISSED ANYBODY OUT , SEE MY SINE IS MELLOW "
	DC.B	"DEMO FOR THE FULL GREETINGS LIST ..... PRESS THE LEFT MOUSE "
	DC.B	"BUTT