;   opt h-
;   org 0

tadcl  equ $FF00
tadch  equ tadcl+48
tapat  equ tadch+48
kod    equ tapat+48
tab_1  equ kod+96

patno  equ 0        (1)
patend equ patno+1  (1)
pataed equ patend+1 (1)
patadr equ pataed+1 (2)
cnts   equ patadr+2 (1)
pause  equ cnts+1   (1)
nr0    equ pause+1  (1)
nr1    equ nr0+1    (1)
nr2    equ nr1+1    (1)
nr3    equ nr2+1    (1)

vbl    equ $d8

sng    equ $400
tivol  equ sng+$80   ;glosnosc sampla

tstrl  equ tivol+$20
trepl  equ tstrl+$20
tendl  equ trepl+$20 ;lsb dl. sampla

tstrh  equ tendl+$20
treph  equ tstrh+$20
tendh  equ treph+$20 ;msb dl. sampla

tlenl  equ tendh+$20
tab_3  equ tlenl+$20
tlng   equ tab_3+$20
tlen   equ tlng+$20
tadr   equ tlen+16
tbnk   equ tadr+16

 dta d'           '
inf3 dta d'SPACE-play  ESC-exiô'
s_pl dta d' samples-'
memo dta d'No memorù'

pmain  equ *
bank0 lda #$fe
   sta $d301

ist_0 lda #0
iad0_m adc #0
   sta ist_0+1
   lda p_0c+1
iad0_s adc #0
   sta p_0c+1
   bcc p_0c
   inc p_0c+2
   lda p_0c+2
ien0_s cmp #0
   bcc p_0c

ire0_m lda #0
   sta p_0c+1
ire0_s lda #0
   sta p_0c+2
   jmp bank1

p_0c ldx $ffff
ivol10 lda $d800,x
ch0 sta $d600

bank1 lda #$fe
   sta $d301

ist_1 lda #0
iad1_m adc #0
   sta ist_1+1
   lda p_1c+1
iad1_s adc #0
   sta p_1c+1
   bcc p_1c
   inc p_1c+2
   lda p_1c+2
ien1_s cmp #0
   bcc p_1c

ire1_m lda #0
   sta p_1c+1
ire1_s lda #0
   sta p_1c+2
   jmp bank2

p_1c ldx $ffff
ivol11 lda $d800,x
ch1 sta $d601

bank2 lda #$fe
   sta $d301

ist_2 lda #0
iad2_m adc #0
   sta ist_2+1
   lda p_2c+1
iad2_s adc #0
   sta p_2c+1
   bcc p_2c
   inc p_2c+2
   lda p_2c+2
ien2_s cmp #0
   bcc p_2c

ire2_m lda #0
   sta p_2c+1
ire2_s lda #0
   sta p_2c+2
   jmp bank3

p_2c ldx $ffff
ivol12 lda $d800,x
ch2 sta $d602

bank3 lda #$fe
   sta $d301

ist_3 lda #0
iad3_m adc #0
   sta ist_3+1
   lda p_3c+1
iad3_s adc #0
   sta p_3c+1
   bcc p_3c
   inc p_3c+2
   lda p_3c+2
ien3_s cmp #0
   bcc p_3c

ire3_m lda #0
   sta p_3c+1
ire3_s lda #0
   sta p_3c+2
   jmp p_e

p_3c ldx $ffff
ivol13 lda $d800,x
ch3 sta $d603

p_e dey
   beq pat
   jmp pmain

*-----------------
*requests

pat ldy #vbl

   dec cnts
   beq pre
   jmp pmain

pre lda #0
   sta patend
   lda #$fe
   sta $d301

*---------------------------
* track  0

i_0 ldy #1
   lda (patadr),y
   tax
   and #$1f
   beq i_0c
   tay
   sta nr0
   lda tivol-1,y
   sta ivol10+2

i_0c txa
   and #$c0
   beq i_0f
   tax
   cpx #$40
   bne *+8
   ldy #2
   lda (patadr),y
   sta ivol10+2
   cpx #$c0
   bne *+8
   ldy #2
   lda (patadr),y
   sta pause
   cpx #$80
   bne *+4
   stx patend

i_0f ldy #0
   lda (patadr),y
   beq i_1
   tax
   lda tadcl-1,x
   sta iad0_m+1
   lda tadch-1,x
   sta iad0_s+1

   ldy nr0
   lda tab_3-1,y
   sta bank0+1

   lda tstrl-1,y
   sta p_0c+1
   lda tstrh-1,y
   sta p_0c+2

   lda tendh-1,y
   sta ien0_s+1

   lda trepl-1,y
   sta ire0_m+1
   lda treph-1,y
   sta ire0_s+1

* track 1

i_1 ldy #4
   lda (patadr),y
   tax
   and #$1f
   beq i_1c
   tay
   sta nr1
   lda tivol-1,y
   sta ivol11+2

i_1c txa
   and #$c0
   beq i_1f
   tax
   cpx #$40
   bne *+8
   ldy #5
   lda (patadr),y
   sta ivol11+2
   cpx #$c0
   bne *+8
   ldy #5
   lda (patadr),y
   sta pause
   cpx #$80
   bne *+4
   stx patend

i_1f ldy #3
   lda (patadr),y
   beq i_2
   tax
   lda tadcl-1,x
   sta iad1_m+1
   lda tadch-1,x
   sta iad1_s+1

   ldy nr1
   lda tab_3-1,y
   sta bank1+1

   lda tstrl-1,y
   sta p_1c+1
   lda tstrh-1,y
   sta p_1c+2

   lda tendh-1,y
   sta ien1_s+1

   lda trepl-1,y
   sta ire1_m+1
   lda treph-1,y
   sta ire1_s+1

* track 2

i_2 ldy #7
   lda (patadr),y
   tax
   and #$1f
   beq i_2c
   tay
   sta nr2
   lda tivol-1,y
   sta ivol12+2

i_2c txa
   and #$c0
   beq i_2f
   tax
   cpx #$40
   bne *+8
   ldy #8
   lda (patadr),y
   sta ivol12+2
   cpx #$c0
   bne *+8
   ldy #8
   lda (patadr),y
   sta pause
   cpx #$80
   bne *+4
   stx patend

i_2f ldy #6
   lda (patadr),y
   beq i_3
   tax
   lda tadcl-1,x
   sta iad2_m+1
   lda tadch-1,x
   sta iad2_s+1

   ldy nr2
   lda tab_3-1,y
   sta bank2+1

   lda tstrl-1,y
   sta p_2c+1
   lda tstrh-1,y
   sta p_2c+2

   lda tendh-1,y
   sta ien2_s+1

   lda trepl-1,y
   sta ire2_m+1
   lda treph-1,y
   sta ire2_s+1

* track 3

i_3 ldy #10
   lda (patadr),y
   tax
   and #$1f
   beq i_3c
   tay
   sta nr3
   lda tivol-1,y
   sta ivol13+2

i_3c txa
   and #$c0
   beq i_3f
   tax
   cpx #$40
   bne *+8
   ldy #11
   lda (patadr),y
   sta ivol13+2
   cpx #$c0
   bne *+8
   ldy #11
   lda (patadr),y
   sta pause
   cpx #$80
   bne *+4
   stx patend

i_3f ldy #9
   lda (patadr),y
   beq i_e
   tax
   lda tadcl-1,x
   sta iad3_m+1
   lda tadch-1,x
   sta iad3_s+1

   ldy nr3
   lda tab_3-1,y
   sta bank3+1

   lda tstrl-1,y
   sta p_3c+1
   lda tstrh-1,y
   sta p_3c+2

   lda tendh-1,y
   sta ien3_s+1

   lda trepl-1,y
   sta ire3_m+1
   lda treph-1,y
   sta ire3_s+1

i_e lda patend
   bne i_en

   lda patadr
   clc
   adc #12
   sta patadr
   lda patadr+1
   adc #0
   sta patadr+1
   cmp pataed
   bcc i_end

i_en inc patno
   ldx patno
patmax cpx #0
   bcc i_ens

   lda #6
   sta pause
   ldx #0
   stx patno

i_ens lda sng,x
   sta patadr+1
   clc
   adc #3
   sta pataed
   lda #0
   sta patadr

i_end lda $d01f
   beq r_qu

   lda pause
   sta cnts
   ldy #vbl
_ret jmp pmain

r_qu jmp $a00

inf2 dta d'-move cursor  RETURN-loaä'
inf1 dta d'SPACE-directorù'
erro dta d'Erroò'
