nolist
STab equ &5400
STabH equ &54

write"syntmc"

org &5000

;ROMs schalten (weil's besser is')
di
exx
set 2,c ;LowerRom off
res 3,c ;UpperRom on
out (c),c
exx
ei

;aus einer viertel SinusTabelle eine ganze SinusTabelle machen
        ld hl,SinTab+63
        ld de,SinTab+64
        ld b,64
loop1   ld a,(hl)
        ld (de),a
        dec hl
        inc de
        djnz loop1
        ld hl,SinTab
        ld b,128
loop2   ld a,(hl)
        neg
        ld (de),a
        inc hl
        inc de
        djnz loop2
        ld hl,SinTab
        ld de,STab
        ld bc,256
        ldir

        di
        ld b,&EF  ;Druckerport

Beispiel1
        ld d,16
loop3   ld e,64
        ld h,STabH
loop4   ld a,(hl)
        xor 128
        out (c),a
        ld c,d
wait    dec c
        jr nz,wait
        ld a,e
        srl a
        srl a
        scf
        adc l
        ld l,a
        jr nc,loop4
        dec e
        jr nz,loop4
        dec d
        jr nz,loop3

Beispiel2
        ld d,1
loop5   ld e,64
loop6   ld a,l
        xor 128
        out (c),a
        ld c,d
wait2   dec c
        jr nz,wait2
        ld h,e
        srl h
        srl h
        scf
        ld a,l
        adc h
        ld l,a
        jr nc,loop6
        dec e
        jr nz,loop6
        inc d
        ld a,d
        cp 16
        jr nz,loop5

Beispiel3
        call b3
        ld a,(aen2)
        push af
        xor a
        ld (aen2),a
        call b3
        pop af
        ld (aen2),a


Beispiel4
        ld d,16
loop9   ld e,64
loop10   ld a,l
        xor 128
        out (c),a
        ld c,d
wait4   dec c
        jr nz,wait4
        ld h,e
        srl h
        srl h
        scf
        ld a,l
        adc h
        ld l,a
        jr nc,loop10
loop11  ld a,l
        xor 128
        out (c),a
        ld c,d
wait5   dec c
        jr nz,wait5
        ld h,e
        srl h
        srl h
        scf
        ld a,l
        adc h
        ld l,a
        jr nc,loop11
        dec e
        jr nz,loop10
        dec d
        jr nz,loop9

        ei
        ret


b3      ld hl,STab
        ld de,STab
        ld a,24
loop8   call sndb3
        sub 8
        jr nz,loop8
        ret

sndb3   ld (aen+1),a
        add a
        sub 128
        neg
        ld c,a
loop7   ld a,(de)
        add (hl)
aen2    ccf
        rra
        out (c),a
aen     ld a,20
wait3   dec a
        jr nz,wait3
        inc l
        inc d
        jr nz,loop7
        inc l
        inc l
        inc l

        dec c
        jr nz,loop7
        ld a,(aen+1)
        ret


sintab
db 128,131,134,137,140,144,147,150,153,156,159,162,165,168
db 171,174,177,179,182,185,188,191,193,196,199,201,204,206
db 209,211,213,216,218,220,222,224,226,228,230,232,234,235
db 237,239,240,241,243,244,245,246,248,249,250,250,251,252
db 253,253,254,254,254,255,255,255




;Normale Abspielroutine fuer einen Sample (Beispiel DIGI1 und DIGI2)

Len equ 28998
warte equ 13

centprt equ &EF


Abspiel di
        ld b,centprt

        ld hl,Sample
        ld de,Len
loop    ld a,warte
wt      dec a
        jr nz,wt
        ld a,(hl)
        xor 128
        out (c),a
        inc hl
        dec de
        ld a,d
        or e
        jr nz,loop
        ei
        ret

Sample

end