;**************************************************************************
;*
;* sap music play type b test
;*
;**************************************************************************
	
	opt h+
	
CODEADR = $4000	
	
	org $4000			   ;prg start
	
	icl "custom.i"

;-------- CODEADR is start segment

	cld
	
	;set display list (use shadow regs)
	
	lda	#<displayList
	sta	DLISTL	
	lda	#>displayList
	sta	DLISTH

	sei				  ;disable irqs
	lda	#$00
	sta	NMIEN			  ;NMIEN all off 
	sta	DMACTL			  ;DMACTL all off
	
	;vertical blank interrupt 
	
	lda 	#>vbi_irq
	sta	VVBLKIH	
	lda 	#<vbi_irq
	sta	VVBLKIL	

	;os key remove
	
	lda	#<noKeyRead
        sta	VSERINL        
        lda	#>noKeyRead
        sta	VSERINH        
	
	;chbase
	
	lda	#$E0
	sta	CHBASE
	
	;color setup
	
	lda	#$0	
	sta	COLBK
	lda	#$a	
	sta	COLPF0
	lda	#$e	
	sta	COLPF1
	lda	#$8	
	sta	COLPF2
	lda	#$88				
	sta	COLPF3
				
	;disable player/missile dma
	
	lda	#$00
	sta	GRACTL
	
	;setup displays
	   
	lda	#DMACTL_DL|DMACTL_PF_NORMAL		
		
		;enable display list dma 			
		;playfield normal display (40)
		
	sta	DMACTL	;DMACTL
	
	;enable ints
	
	lda	#NMIEN_VBI
	sta	NMIEN	;VBI
	
	;init song

	jsr	SONG_INIT
	
	;int enable
	
	;cli
	
	;
	
loop	

?WaitVC0
        lda	VCOUNT		
        beq	?WaitVC0   	
?WaitVCnot0
        lda	VCOUNT		
        bne	?WaitVCnot0   
		
	;TBD	
		
	jmp	loop
	
	
	
;************************************************
;*
;* vertical blank interrupt (immidiate, x,y regs save bei os rom)
;*
;************************************************

vbi_irq
				
	lda	#0
	jsr	SONG_PLAYER
	
	;prolog (like XITVBL)
	
	pla					  
	tay
	pla					  
	tax
	pla					  
	rti
	
	; display list

	;7	6	5	4	3	2	1	0
	;DLI	LMS	VSCROLL	HSCOLL	Mode
	;
	;Mode 0 Blank lines 7..4 is count+1 of blank lines
	;Mode 1 JMP (use with LMS to set destination)
	;Mode $2-$f is ANTIC mode

	.align $400
	
displayList	 
	.byte 0			;Mode 0
	.byte $70		;8 blank lines	
	.byte $70		;8 blank lines	
	.byte $47,<charData,>charData   	;Mode 7 + LMS	 
	.rept 12
	.byte $7   
	.endr
	.byte $41,<displayList,>displayList ; wait vblank, restart same display list on next frame

charData

	.byte	">------------------<"
	.byte	">                  <"
	.byte	"> SAP TYPE B PAL   <"
	.byte   "> MUSIC TEST 1     <"
	.byte	">                  <"
	.byte	">                  <"
	.byte	">                  <"
	.byte   ">                  <"
	.byte	">                  <"
	.byte	">                  <"	
	.byte	">                  <" 
	.byte   ">                  <"	
	.byte	">------------------<"	
		
	org	$1803
	
.define SONG_INIT	$1B23  	;from header 
.define SONG_PLAYER	$1B4C   	
	
	;header + payload + code
	
	ins	"sfx/Compy_Shop_Magazin_6.sap",$77	;skip header + payload
	
	;as example (you have to check it for any sap file, or modify the binary)
	
;Offset(h) 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
;
;00000000  53 41 50 0D 0A 41 55 54 48 4F 52 20 22 3C 3F 3E  SAP..AUTHOR "<?>
;00000010  22 0D 0A 4E 41 4D 45 20 22 43 6F 6D 70 79 20 53  "..NAME "Compy S
;00000020  68 6F 70 20 4D 61 67 61 7A 69 6E 20 36 22 0D 0A  hop Magazin 6"..
;00000030  44 41 54 45 20 22 31 39 38 39 22 0D 0A 54 59 50  DATE "1989"..TYP
;00000040  45 20 42 0D 0A 49 4E 49 54 20 31 42 32 33 0D 0A  E B..INIT 1B23.. init $1b23
;00000050  50 4C 41 59 45 52 20 31 42 34 43 0D 0A 54 49 4D  PLAYER 1B4C..TIM player $1b4c
;00000060  45 20 30 30 3A 34 34 2E 39 32 20 4C 4F 4F 50 0D  E 00:44.92 LOOP.
;00000070  0A FF FF 03 18 86 1C 00 00 00 00 00 00 00 00 00  .ÿÿ..†.......... -- FF FF (end marker) 03 18 ($1803 load) 86 1c ($1c86 Music) Header End
;00000080  00 00 00 00 00 00 00 C5 00 C5 00 00 00 C5 00 C5  .......Å.Å...Å.Å $71 +2 (ff) + 2 (Init) + 2 (Music) = $77 head
;00000090  00 C5 00 00 00 00 00 C5 00 C5 00 C5 00 C5 C5 00  .Å.....Å.Å.Å.ÅÅ. so you have to org load ($1803) - $77 or to ins with $77 offset
;000000A0  C5 C5 00 C5 00 C5 00 C5 00 C5 00 C5 00 C5 C5 00  ÅÅ.Å.Å.Å.Å.Å.ÅÅ.
;000000B0  00 00 00 00 00 00 00 37 00 37 00 00 00 37 00 37  .......7.7...7.7
;000000C0  00 37 00 00 00 00 00 51 00 51 00 00 00 51 00 51  .7.....Q.Q...Q.Q
;000000D0  00 51 00 00 00 00 00 61 00 61 00 00 00 61 00 6F  .Q.....a.a...a.o
;000000E0  00 6F 00 00 00 00 00 61 00 61 00 61 00 00 00 61  .o.....a.a.a...a
;000000F0  00 61 00 00 00 00 00 E6 00 E6 00 00 00 E6 00 E6  .a.....æ.æ...æ.æ
;00000100  00 E6 00 00 00 00 00 6F 00 6F 00 00 00 6F 00 6F  .æ.....o.o...o.o
;00000110  00 6F 00 00 00 00 00 48 00 48 00 00 00 48 00 48  .o.....H.H...H.H
;00000120  00 48 00 00 00 00 00 00 00 00 00 00 00 00 00 00  .H..............
;00000130  00 00 00 00 00 00 00 00 00 79 79 66 66 51 51 00  .........yyffQQ.
;00000140  00 79 79 66 51 5B 66 00 00 66 66 51 51 44 44 00  .yyfQ[f..ffQQDD.
;00000150  00 66 66 51 44 4C 51 00 00 79 79 66 66 4C 4C 00  .ffQDLQ..yyffLL.
;00000160  00 79 79 66 4C 5B 66 00 00 00 00 00 00 00 00 79  .yyfL[f........y
;00000170  79 79 79 66 00 5B 51 79 00 79 00 79 00 79 00 79  yyyf.[Qy.y.y.y.y
;00000180  00 79 00 79 00 79 00 5B 00 5B 00 5B 00 5B 00 5B  .y.y.y.[.[.[.[.[
;00000190  00 5B 00 5B 00 5B 00 66 00 66 00 66 00 66 00 66  .[.[.[.f.f.f.f.f
;000001A0  00 66 00 66 00 66 00 00 00 00 00 00 00 00 00 00  .f.f.f..........
;000001B0  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
;000001C0  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
;000001D0  00 00 00 00 00 00 00 1D 1D 1D 1D 1D 00 1D 1D 00  ................
;000001E0  1D 1D 00 1D 00 1D 00 1D 00 1D 00 1D 00 1D 1D 00  ................
;000001F0  00 00 00 00 00 00 00 3C 00 00 00 00 00 35 00 00  .......<.....5..
;00000200  00 00 00 32 00 00 00 28 00 00 00 00 00 2D 00 00  ...2...(.....-..
;00000210  00 00 00 32 00 00 00 3C 00 00 00 00 00 32 00 00  ...2...<.....2..
;00000220  00 00 00 25 00 00 00 2D 00 00 00 2D 00 00 00 32  ...%...-...-...2
;00000230  00 35 00 00 00 00 00 3C 00 00 00 00 00 32 00 00  .5.....<.....2..
;00000240  00 00 00 28 00 00 00 21 00 00 00 00 00 25 00 00  ...(...!.....%..
;00000250  00 00 00 28 00 00 00 32 00 00 00 00 00 28 00 00  ...(...2.....(..
;00000260  00 00 00 25 00 00 00 2D 00 00 00 2D 00 00 00 32  ...%...-...-...2
;00000270  00 35 00 00 00 00 00 3C 00 00 00 3C 00 00 00 44  .5.....<...<...D
;00000280  00 48 00 00 00 00 00 00 00 51 00 5B 66 00 79 00  .H.......Q.[f.y.
;00000290  00 00 00 88 00 79 00 00 00 51 00 5B 66 00 5B 00  ...ˆ.y...Q.[f.[.
;000002A0  00 00 00 00 00 00 00 00 00 5B 00 66 6C 00 66 00  .........[.fl.f.
;000002B0  00 00 00 6C 00 79 00 88 00 00 00 00 00 00 00 00  ...l.y.ˆ........
;000002C0  00 00 00 00 00 00 00 00 00 3C 00 44 4C 00 5B 00  .........<.DL.[.
;000002D0  00 00 00 00 00 00 00 00 00 44 00 4C 51 00 4C 00  .........D.LQ.L.
;000002E0  00 00 00 44 00 00 00 4C 00 00 00 00 00 51 00 00  ...D...L.....Q..
;000002F0  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
;00000300  00 00 00 00 00 00 00 32 00 00 00 0A 00 00 32 32  .......2......22
;00000310  00 00 00 0A 00 00 00 3C 00 3C 00 3C 00 3C 3C 00  .......<.<.<.<<.
;00000320  3C 3C 00 3C 00 3C 00 3C 00 3C 00 3C 00 3C 3C 00  <<.<.<.<.<.<.<<.
;00000330  00 00 00 1E 00 00 00 46 00 46 00 1E 00 46 00 46  .......F.F...F.F
;00000340  00 46 00 1E 00 1E 00 10 00 10 10 18 00 18 18 08  .F..............
;00000350  08 20 08 20 10 28 08 28 18 30 08 30 08 38 08 08  . . .(.(.0.0.8..
;00000360  08 40 08 20 10 48 08 28 18 50 08 30 08 58 08 10  .@. .H.(.P.0.X..
;00000370  00 10 10 18 00 18 18 08 28 68 20 38 28 70 20 38  ........(h 8(p 8
;00000380  30 78 20 48 38 80 20 08 28 68 20 38 28 88 20 28  0x H8€ .(h 8(ˆ (
;00000390  30 90 20 48 38 98 20 A2 03 A9 00 9D 60 1C 9D 64  0. H8˜ ¢.©..`..d
;000003A0  1C 9D 68 1C CA 10 F4 8D 6C 1C 8E 6F 1C A9 14 8D  ..h.Ê.ô.l.Žo.©..
;000003B0  6D 1C A9 01 8D 6E 1C A9 07 A2 1B A0 4C 60 5C E4  m.©..n.©.¢. L`\ä
;000003C0  A9 03 8D 0F D2 A9 00 8D 08 D2 A2 07 BD 60 1C 9D  ©...Ò©...Ò¢.½`..
;000003D0  00 D2 CA 10 F7 CE 6E 1C AD 6E 1C F0 03 4C 20 1C  .ÒÊ.÷În..n.ð.L .
;000003E0  A9 07 8D 6E 1C EE 6F 1C AD 6F 1C 29 0F 8D 6F 1C  ©..n.îo..o.)..o.
;000003F0  D0 41 AD 6C 1C 0A 0A A8 A2 00 B9 D3 1A 9D 68 1C  ÐA.l...¨¢.¹Ó..h.
;00000400  C8 E8 E0 04 90 F4 0E 68 1C 0E 69 1C 0E 6B 1C A9  Èèà..ô.h..i..k.©
;00000410  00 8D 5C 1C 8D 4D 1C AD 6A 1C C9 20 90 05 A9 03  ..\..M..j.É ..©.
;00000420  8D 4D 1C EE 6C 1C AD 6C 1C CD 6D 1C D0 05 A9 00  .M.îl..l.Ím.Ð.©.
;00000430  8D 6C 1C AD 6F 1C 0D 68 1C AA BD 03 18 F0 08 8D  .l..o..h.ª½..ð..
;00000440  60 1C A9 C8 8D 61 1C AD 6F 1C 0D 69 1C AA BD B3  `.©È.a..o..i.ª½³
;00000450  18 F0 08 8D 62 1C A9 A8 8D 63 1C A9 19 8D FB 1B  .ð..b.©¨.c.©..û.
;00000460  AD 6A 1C 0A 0D 6F 1C 90 03 EE FB 1B AA BD 43 19  .j...o...îû.ª½C.
;00000470  F0 0B 8D 64 1C 8D 70 1C A9 A8 8D 65 1C AD 6F 1C  ð..d..p.©¨.e..o.
;00000480  0D 6B 1C AA BD 83 1A F0 08 8D 66 1C A9 88 8D 67  .k.ª½ƒ.ð..f.©ˆ.g
;00000490  1C 60 62 E4 A5 14 29 01 D0 24 A2 07 BD 60 1C 29  .`bä¥.).Ð$¢.½`.)
;000004A0  0F F0 0D DE 60 1C BD 60 1C 29 70 D0 03 DE 60 1C  .ð.Þ`.½`.)pÐ.Þ`.
;000004B0  CA CA 10 E8 AD 63 1C 29 0F F0 03 CE 63 1C A5 14  ÊÊ.è.c.).ð.Îc.¥.
;000004C0  29 00 AA AD 70 1C 18 7D 5C 1C 8D 64 1C 60 62 E4  ).ª.p..}\..d.`bä
;000004D0  00 01 00 FF C5 C3 00 00 1D A3 3C 80 30 00 18 30  ...ÿÅÃ...£<€0..0
;000004E0  02 14 02 03 1D 00 00 00 00 00 00 00 00 00 00 00  ................
;000004F0  00 00 00 00 00 00 00 00 00 00 60                 ..........`
	
	
;************************************************
;*
;* dummy
;*
;************************************************
	
noKeyRead	
	rts	
	
	lda	#$0
	sta	HSCROL