; scrollcode by Sharp

Lines: equ 32
Lines2: equ 96
Words: equ 2
Words2: equ 22
Modules = (320/8) - (2*(32/16)) 

  Section Blitter,Code_C

o: move.l #Bild,a0
   move.w #51200,d0
m: move.b #0,(a0)+
   dbra   d0,m
   jsr    gfxopen
   move.w #$4000,$dff09a
p: tst.b  $dff006
   bne    p
   move.w $dff002,dmasaf   
   bset   #7,dmasaf       
   move.w #$7fff,$dff096
   move.w #$83C0,$dff096
   move.l #Copper,$dff080
   clr.w  $dff088
	move.l	#text,point
   
   jsr    logoin
 
   move.l #9,d4
setloop:
   jsr    setup
   dbra   d4,setloop

   jsr    next

Main: 
	move.b	$dff006,d6
	cmp.b	#$f0,d6
	bne	Main
	btst	#$0,$dff005
	bne	Main

   jsr    Blitter

   btst   #6,$bfe001
   bne    Main
   
out:
   move.l 4,a6
   clr.w  d0
   lea    gfxname,a1
   jsr    -552(a6)
   move.l d0,a0
   move.l 38(a0),$dff080
   clr.w  $dff088   
   move.w dmasaf,$dff096
   move.w $c000,$dff096
   clr.l  d0
   rts

logoin:
   lea     PLANER,a0
     
   move.l  #Bild,d0
   move.l  #5,d1
PLLOOP:
   move.w  d0,6(a0)
   
   swap    d0
   move.w  d0,2(a0)

   swap    d0
   add.l   #56000/5,d0
  
   add.l   #8,a0
 
   subq.l  #1,d1
   bne.s   PLLOOP

   move.l  #Col,a0

   lea     FARVER,a1
   move.l  #32,d0
PRLOOP:
   move.w  (a0)+,2(a1)
   add.l   #4,a1

   subq.l  #1,d0
   bne.s   PRLOOP

   rts
   
gfxopen:
   move.l 4,a6
   lea    gfxname(pc),a1   
   jsr    -408(a6)
   move.l d0,gfxbase
   rts

setup  
     	move.w	#0,blitt
       move.l #6,d1

set1:	cmp.b	#0,pass3
	bne	set2
        
   move.l #Bild,a3
   move.b #1,pass3

	bra	clear2
set2:	cmp.b	#1,pass3
	bne	set3
 
   move.l #Bild+4,a3
   move.b #2,pass3

	bra	clear2
set3:	cmp.b	#2,pass3
	bne	set4
 
   move.l #Bild+8,a3
   move.b #3,pass3

	bra	clear2
set4:	cmp.b	#3,pass3
	bne	set5
 
   move.l #Bild+12,a3
   move.b #4,pass3

	bra	clear2
set5:	cmp.b	#4,pass3
	bne	set6
 
   move.l #Bild+16,a3
   move.b #5,pass3

	bra	clear2
set6:	cmp.b	#5,pass3
	bne	set7
 
   move.l #Bild+20,a3
   move.b #6,pass3

	bra	clear2
set7:	cmp.b	#6,pass3
	bne	set8
 
   move.l #Bild+24,a3
   move.b #7,pass3

	bra	clear2
set8:	cmp.b	#7,pass3
	bne	set9
 
   move.l #Bild+28,a3
   move.b #8,pass3

	bra	clear2
set9:	cmp.b	#8,pass3
	bne	set10
 
   move.l #Bild+32,a3
   move.b #9,pass3

	bra	clear2
set10:	cmp.b	#9,pass3
	bne	trust
 
   move.l #Bild+36,a3
   move.b #10,pass3

	bra	clear2

clear2:
      move.l point,a0
		clr.l	d0
		clr.l	d1
		clr.l	d2
		move.b	(a0)+,d0
		cmp.w	#"`",d0
		bne	forts2
		move.l	#text,point
		bra	clear2

forts2:		move.l	a0,point
		sub.l	#32,d0
		rol.w	#1,d0
		lea	Charpos,a0
		lea	Read,a1
		move.w	(a0,d0.w),d1
		move.w	d1,d2
		move.l	a1,a2
		add.l	d2,a2
           

srow1:	cmp.b	#0,pass
	bne	srow2
        
   move.b #1,pass

	bra	blitt_back_block2
srow2:	cmp.b	#1,pass
	bne	srow3
 
   sub.l #44800,a3 
   add.l #1408,a3
   move.b #2,pass

	bra	blitt_back_block2
srow3:	cmp.b	#2,pass
	bne	srow4
 
   sub.l #44800,a3
   add.l #1408,a3 
   move.b #3,pass

	bra	blitt_back_block2
srow4:	cmp.b	#3,pass
	bne	srow5
 
   sub.l #44800,a3
   add.l #1408,a3 
   move.b #4,pass

	bra	blitt_back_block2
srow5:	cmp.b	#4,pass
	bne	srow6
 
   sub.l #44800,a3
   add.l #1408,a3  
   move.b #5,pass

	bra	blitt_back_block2
srow6:	cmp.b	#5,pass
	bne	srow7
 
   sub.l #44800,a3
   add.l #1408,a3  
   move.b #6,pass

	bra	blitt_back_block2
srow7:	cmp.b	#6,pass
	bne	swrongv
  
   sub.l #44800,a3
   add.l #1408,a3     
   move.b #7,pass 

	bra	blitt_back_block2

swrongv:	
   move.b #0,pass
	rts

blitt_back_block2
     move.l  #$09f00000,$dff040
     move.l  #$ffffffff,$dff044
     move.l  a2,$dff050
     move.l  a3,$dff054
     move.w  #36,$dff064     
     move.w  #40,$dff066     
     move.w  #64*Lines+Words,$dff058
     bsr     Waitblitt

		add.l	#8000,a2
      add.l #11200,a3 

     move.l  a2,$dff050
     move.l  a3,$dff054
     move.w  #64*Lines+Words,$dff058
     bsr     Waitblitt

		add.l	#8000,a2
      add.l #11200,a3

     move.l  a2,$dff050
     move.l  a3,$dff054
     move.w  #64*Lines+Words,$dff058
     bsr     Waitblitt
     
		add.l	#8000,a2
      add.l #11200,a3

     move.l  a2,$dff050
     move.l  a3,$dff054
     move.w  #64*Lines+Words,$dff058
     bsr     Waitblitt

		add.l	#8000,a2
      add.l #11200,a3

     move.l  a2,$dff050
     move.l  a3,$dff054
     move.w  #64*Lines+Words,$dff058
     bsr     Waitblitt     
     dbra	d1,clear2
trust: rts

Blitter:
   move.l #3,d1
	cmp.b	#0,scrollspeed
	bhi	do_scroll
	rts
do_scroll:
	moveq	#$10,d0
	sub.b	scrollspeed,d0
	and.l	#$f,d0
	ror.l	#4,d0
	add.l	#$09f00000,d0
	move.l	d0,$dff040
    
    cmp.b #0,pass2
    beq  do1
    cmp.b #1,pass2
    beq  do2
    cmp.b #2,pass2
    beq  do3
    rts

do1:
    lea     Bild,a3
    move.b #1,pass2    
    bra     Control
do2:     
     lea     Bild,a3
     add.l   #4224,a3
     move.b #2,pass2     
    bra     Control2

do3:     
     lea     Bild,a3
     add.l   #5632,a3
     move.b #0,pass2
    bra     Control

Control
     move.l  #$ffffffff,$dff044
     move.l  a3,$dff050
     sub.l   #2,a3
     move.l  a3,$dff054
     add.l   #2,a3
	  Move.l	 #0,$dff064	; Screen is $50 wide, font is $28 wide          
     move.w  #64*Lines2+Words2,$dff058
     bsr     Waitblitt

		add.l	#11200,a3

     move.l  #$ffffffff,$dff044
     move.l  a3,$dff050
     sub.l   #2,a3
     move.l  a3,$dff054
     add.l   #2,a3
     Move.l	 #0,$dff064	; Screen is $50 wide, font is $28 wide          
     move.w  #64*Lines2+Words2,$dff058
     bsr     Waitblitt 

		add.l	#11200,a3

     move.l  #$ffffffff,$dff044
     move.l  a3,$dff050
     sub.l   #2,a3
     move.l  a3,$dff054
     add.l   #2,a3
	  Move.l	 #0,$dff064	; Screen is $50 wide, font is $28 wide
     move.w  #64*Lines2+Words2,$dff058
     bsr     Waitblitt
     
		add.l	#11200,a3

     move.l  #$ffffffff,$dff044
     move.l  a3,$dff050
     sub.l   #2,a3
     move.l  a3,$dff054
     add.l   #2,a3
	  Move.l	 #0,$dff064	; Screen is $50 wide, font is $28 wide
     move.w  #64*Lines2+Words2,$dff058
     bsr     Waitblitt

		add.l	#11200,a3

     move.l  #$ffffffff,$dff044
     move.l  a3,$dff050
     sub.l   #2,a3
     move.l  a3,$dff054
     add.l   #2,a3
     Move.l	 #0,$dff064	; Screen is $50 wide, font is $28 wide      
     move.w  #64*Lines2+Words2,$dff058
     bsr     Waitblitt

	clr	d0
	move.b	scrollspeed,d0
		add.w	#1,blitt
		cmp.w	#30,blitt
		beq.w	next
      rts

Control2
     move.l  #$ffffffff,$dff044
     move.l  a3,$dff050
     sub.l   #2,a3
     move.l  a3,$dff054
     add.l   #2,a3
	  Move.l	 #0,$dff064	; Screen is $50 wide, font is $28 wide          
     move.w  #64*Lines+Words2,$dff058
     bsr     Waitblitt

		add.l	#11200,a3

     move.l  #$ffffffff,$dff044
     move.l  a3,$dff050
     sub.l   #2,a3
     move.l  a3,$dff054
     add.l   #2,a3
     Move.l	 #0,$dff064	; Screen is $50 wide, font is $28 wide          
     move.w  #64*Lines+Words2,$dff058
     bsr     Waitblitt 

		add.l	#11200,a3

     move.l  #$ffffffff,$dff044
     move.l  a3,$dff050
     sub.l   #2,a3
     move.l  a3,$dff054
     add.l   #2,a3
	  Move.l	 #0,$dff064	; Screen is $50 wide, font is $28 wide
     move.w  #64*Lines+Words2,$dff058
     bsr     Waitblitt
     
		add.l	#11200,a3

     move.l  #$ffffffff,$dff044
     move.l  a3,$dff050
     sub.l   #2,a3
     move.l  a3,$dff054
     add.l   #2,a3
	  Move.l	 #0,$dff064	; Screen is $50 wide, font is $28 wide
     move.w  #64*Lines+Words2,$dff058
     bsr     Waitblitt

		add.l	#11200,a3

     move.l  #$ffffffff,$dff044
     move.l  a3,$dff050
     sub.l   #2,a3
     move.l  a3,$dff054
     add.l   #2,a3
     Move.l	 #0,$dff064	; Screen is $50 wide, font is $28 wide      
     move.w  #64*Lines+Words2,$dff058
     bsr     Waitblitt

	clr	d0
	move.b	scrollspeed,d0
		add.w	#1,blitt
		cmp.w	#30,blitt
		beq	next
      rts

next  
     	move.w	#0,blitt
       move.l #6,d1

clear: move.l point,a0
		clr.l	d0
		clr.l	d1
		clr.l	d2
		move.b	(a0)+,d0
		cmp.w	#"`",d0
		bne	forts
		move.l	#text,point
		bra	clear

forts:		move.l	a0,point
		sub.l	#32,d0
		rol.w	#1,d0
		lea	Charpos,a0
		lea	Read,a1
		move.w	(a0,d0.w),d1
		move.w	d1,d2
		move.l	a1,a2
		add.l	d2,a2
            
row1:	cmp.b	#0,pass
	bne	row2

   move.l #Bild+40,a3        
   move.b #1,pass

	bra	blitt_back_block
row2:	cmp.b	#1,pass
	bne	row3

   move.l #Bild+40,a3 
   add.l #1408,a3 
   move.b #2,pass

	bra	blitt_back_block
row3:	cmp.b	#2,pass
	bne	row4

   move.l #Bild+40,a3 
   add.l #2816,a3 
   move.b #3,pass

	bra	blitt_back_block
row4:	cmp.b	#3,pass
	bne	row5

   move.l #Bild+40,a3 
   add.l #4224,a3 
   move.b #4,pass

	bra	blitt_back_block
row5:	cmp.b	#4,pass
	bne	row6

   move.l #Bild+40,a3 
   add.l #5632,a3 
   move.b #5,pass

	bra	blitt_back_block
row6:	cmp.b	#5,pass
	bne	row7

   move.l #Bild+40,a3 
   add.l #7040,a3 
   move.b #6,pass

	bra	blitt_back_block
row7:	cmp.b	#6,pass
	bne	wrongv

   move.l #Bild+40,a3 
   add.l #8448,a3 
   move.b #7,pass 

	bra	blitt_back_block

wrongv:	
   move.b #0,pass
	rts

blitt_back_block
     move.l  #$09f00000,$dff040
     move.l  #$ffffffff,$dff044
     move.l  a2,$dff050
     move.l  a3,$dff054
     move.w  #36,$dff064     
     move.w  #40,$dff066     
     move.w  #64*Lines+Words,$dff058
     bsr     Waitblitt

		add.l	#8000,a2
      add.l #11200,a3 

     move.l  a2,$dff050
     move.l  a3,$dff054
     move.w  #64*Lines+Words,$dff058
     bsr     Waitblitt

		add.l	#8000,a2
      add.l #11200,a3

     move.l  a2,$dff050
     move.l  a3,$dff054
     move.w  #64*Lines+Words,$dff058
     bsr     Waitblitt
     
		add.l	#8000,a2
      add.l #11200,a3

     move.l  a2,$dff050
     move.l  a3,$dff054
     move.w  #64*Lines+Words,$dff058
     bsr     Waitblitt

		add.l	#8000,a2
      add.l #11200,a3

     move.l  a2,$dff050
     move.l  a3,$dff054
     move.w  #64*Lines+Words,$dff058
     bsr     Waitblitt     
     dbra	d1,clear
     rts 

Waitblitt:
     btst  #6,$dff002 
     bne.s Waitblitt
     rts

pass:    dc.b 0
pass2:   dc.b 0 
pass3:   dc.b 0
dmasaf:  dc.w 0
gfxname:  dc.b 'graphics.library',0
even
gfxbase:  dc.l 0

Col:	dc.w	$000,$AAA,$555,$FFF,$808,$000,$420,$620
		dc.w	$950,$C90,$FE0,$080,$0D0,$0CC,$06F,$C08
		dc.w	$620,$E52,$A52,$FCA,$333,$444,$555,$666
		dc.w	$777,$888,$999,$AAA,$CCC,$DDD,$EEE,$FFF

Copper:
   dc.w    $008e,$1a64,$0090,$41d1
   dc.w    $0092,$0038,$0094,$00d0
   dc.w    $0102,$0000
   dc.w    $0108
   dc.w    $0004
   dc.w    $010a
   dc.w    $0004
   dc.w    $0180,$0000,$0100,$0200
   dc.w    $0182,$0000
   dc.w    $2e01,$fffe
       
   dc.w    $0180,$0000

FARVER:
   dc.w    $0180,$0000,$0182,$0000,$0184,$0000,$0186,$0000
   dc.w    $0188,$0000,$018a,$0000,$018c,$0000,$018e,$0000
   dc.w    $0190,$0000,$0192,$0000,$0194,$0000,$0196,$0000
   dc.w    $0198,$0000,$019a,$0000,$019c,$0000,$019e,$0000
   dc.w    $01a0,$0000,$01a2,$0000,$01a4,$0000,$01a6,$0000
   dc.w    $01a8,$0000,$01aa,$0000,$01ac,$0000,$01ae,$0000
   dc.w    $01b0,$0000,$01b2,$0000,$01b4,$0000,$01b6,$0000
   dc.w    $01b8,$0000,$01ba,$0000,$01bc,$0000,$01be,$0000

PLANER:
   dc.w    $00e0,$0007,$00e2,$0000
   dc.w    $00e4,$0007,$00e6,$0000
   dc.w    $00e8,$0007,$00ea,$0000
   dc.w    $00ec,$0007,$00ee,$0000
   dc.w    $00f0,$0007,$00f2,$0000
   dc.w    $3011,$fffe,$0100,$5200

   dc.w    $ffe1,$fffe
   dc.w    $0011,$fffe
   
   dc.w    $1401,$fffe

   dc.w    $0100,$0200
   dc.w    $0180,$0000
   dc.w    $ffff,$fffe

point:		dc.l	0
blitt:		dc.w	0
scrollspeed:	dc.b $3

text:
     dc.b 'F<<H$.J '
     dc.b 'P!!I%/K '
     dc.b 'F<<H*<J '
     dc.b 'P!!I+!K '
     dc.b 'F<<H*<J '
     dc.b 'P!!I+!K '
     dc.b 'F<<6@<J '
     dc.b 'P!!7A!K '
     dc.b 'F)3=GQJ '
     dc.b 'P!!!!!K '
     dc.b 'F<<<<<J '
     dc.b 'P)3=GQK '
     dc.b 'F<<4><J '
     dc.b 'P!!5?!K '
     dc.b 'F&0H*<J '
     dc.b "P'1I+!K "
     dc.b 'F<<H*<J '
     dc.b 'P!!I+!K '
     dc.b 'F&0H*<J '
     dc.b "P'1I+!K "
     dc.b 'F<<6@<J '
     dc.b 'P!!7A!K '
     dc.b 'F)3=GQJ '
     dc.b 'P!!!!!K '
     dc.b 'F<<<<<J '
     dc.b 'P!!!!!K '
     dc.b 'F<<<<<J '
     dc.b 'P!!!!!K '
     dc.b 'F<<<<<J '
     dc.b 'P!!!!!K '
     dc.b 'F<<<<<J '
     dc.b 'P)3=GQK '
     dc.b 'F<<4><J '
     dc.b 'P!!5?!K '
     dc.b 'F(2H*<J '
     dc.b 'P!!I+!K '
     dc.b 'F&0H*<J '
     dc.b "P'1I+!K "
     dc.b 'F<<H*<J '
     dc.b 'P(2I+!K '
     dc.b 'F<<6@<J '
     dc.b 'P!!7A!K '
     dc.b 'F)3=GQJ '
     dc.b 'P!!!!!K '
     dc.b 'F<<<<<J '
     dc.b 'P)3=GQK '
     dc.b 'F<<4><J '
     dc.b 'P!!5?!K '
     dc.b 'F<<H*<J '
     dc.b 'P!!I+!K '
     dc.b 'F<<H*<J '
     dc.b 'P!!I+!K '
     dc.b 'F<<H",J '
     dc.b 'P!!I#-K '
		dc.b	"`"
 even

Charpos dc.w 0,4,8,12,16,20,24,28,32,36 ; !"#$%&'()
 dc.w 1600,1604,1608,1612,1616,1620,1624,1628,1632,1636 ; *+,-./0123
 dc.w 3200,3204,3208,3212,3216,3220,3224,3228,3232,3236 ; 456789:;<=
 dc.w 4800,4804,4808,4812,4816,4820,4824,4828,4832,4836 ; >?@ABCDEFG 
 dc.w 6400,6404,6408,6412,6416,6420,6424,6428,6432,6436 ; HIJKLMNOPQ
 dc.w 8000,8004,8008,8012,8016,8020,8024,8028,8032,8036 ; RSTUVWXYZ[
 dc.w 0,9604,9608,9612 ; \]^_

Read:
 incbin "Asmdisk2:logo/Map.raw"
 even

Bild: ds.b 56000


