
                        .FILE     H:\PROJAVR\ADA-C DDS-ULD\Sinus.pas

                        ; Compiled by E-LAB AVRco PASCAL Compiler Rev 4.67
                        ; Version     : Profi
                        ;
                        ; Licenced to : Demo Version
                        ;
                        ; (c)E-LAB Computers, Grombacherstr. 27  e-mail info@e-lab.de
                        ; D-74906 Bad Rappenau  Tel. 07268/9124-0 Fax. 07268/9124-24
                        ; ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
                        ; Source File : Sinus.pas
                        ; Compiled    : 11. November 2007  18:38:08
                        ; ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

                        .SMALL
                        .ROMEND         00FFFh;

                        ; ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
                        ; Constants and Variables definition
                        ; ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++


                        ; === Internal used memory and constants ===

FALSE                   .EQU    000h            ; const 
TRUE                    .EQU    0FFh            ; const 
NIL                     .EQU    000h            ; const 
PI                      .EQU    000h            ; const 
COMPILERREV             .EQU    1D3h            ; const 
COMPILERBUILD_Y         .EQU    007h            ; const 
COMPILERBUILD_M         .EQU    004h            ; const 
COMPILERBUILD_D         .EQU    016h            ; const 
COMPILEYEAR             .EQU    007h            ; const 
COMPILEMONTH            .EQU    00Bh            ; const 
COMPILEDAY              .EQU    00Bh            ; const 
COMPILEHOUR             .EQU    012h            ; const 
COMPILEMINUTE           .EQU    026h            ; const 
PROJECTBUILD            .EQU    08Bh            ; const 
OPTIMISERREV            .EQU    000h            ; const 
OPTIMISERBUILD          .EQU    000h            ; const 
INTFLAG                 .EQU    007h            ; const 
_EEPROM                 .EQU    006h            ; const 
_SIGN                   .EQU    005h            ; const 
_WAITLCD                .EQU    004h            ; const 
_STRCONST               .EQU    004h            ; const 
_DEVICE                 .EQU    003h            ; const 
_NEGATIVE               .EQU    002h            ; const 
_ERRFLAG                .EQU    001h            ; const 
_I2C2BYTE               .EQU    000h            ; const 
_TOGGLE300              .EQU    000h            ; const 
_LCDLOWER               .EQU    001h            ; const 
_DSP7RFR                .EQU    002h            ; const 
_PWRSAVFLG              .EQU    003h            ; const 
_STEPCW                 .EQU    004h            ; const 
_STEPDEST               .EQU    005h            ; const 
_FREQCNTFLAG            .EQU    006h            ; const 
_AUTOACK                .EQU    007h            ; const 
_ACCGLO                 .EQU    000h            ; var Data   byte
_ACCGHI                 .EQU    001h            ; var Data   byte
_ACCB                   .EQU    010h            ; var Data   byte
_ACCA                   .EQU    011h            ; var Data   byte
_ACCALO                 .EQU    012h            ; var Data   byte
_ACCAHI                 .EQU    013h            ; var Data   byte
_ACCDLO                 .EQU    014h            ; var Data   byte
_ACCDHI                 .EQU    015h            ; var Data   byte
_ACCELO                 .EQU    016h            ; var Data   byte
_ACCEHI                 .EQU    017h            ; var Data   byte
_ACCFLO                 .EQU    018h            ; var Data   byte
_ACCFHI                 .EQU    019h            ; var Data   byte
_ACCBLO                 .EQU    01Ah            ; var Data   byte
_ACCBHI                 .EQU    01Bh            ; var Data   byte
_FRAMEPTR               .EQU    01Ch            ; var Data   byte
_FPTRHI                 .EQU    01Dh            ; var Data   byte
_ACCCLO                 .EQU    01Eh            ; var Data   byte
_ACCCHI                 .EQU    01Fh            ; var Data   byte
$_SAVERET               .EQU    002h            ; var Data   byte
$_SAVERET1              .EQU    003h            ; var Data   byte
FLAGS                   .EQU    004h            ; var Data   byte
FLAGS2                  .EQU    005h            ; var Data   byte
_SYSTFLAGS              .EQU    006h            ; var Data   byte
SYSTICK                 .EQU    00Ah            ; const 
PROCCLOCK               .EQU    1770000h        ; const 
DECIMALSEP              .EQU    02Eh            ; const 
CPU_ID                  .EQU    1E9205h         ; const 
ROMconstPage            .EQU    0FFFFFFFFFFFFFFFFh          ; const 
STACKSIZE               .EQU    010h            ; const 
FRAMESIZE               .EQU    010h            ; const 
SERPORT                 .EQU    4B00h           ; const 
UDR1                    .EQU    0C6h            ; var iData  byte
UBRR1H                  .EQU    0C5h            ; var iData  byte
UBRRH                   .EQU    0C5h            ; var iData  byte
UBRR1                   .EQU    0C4h            ; var iData  byte
UBRRL                   .EQU    0C4h            ; var iData  byte
UCSRC                   .EQU    0C2h            ; var iData  byte
UCSR0C                  .EQU    0C2h            ; var iData  byte
UCR1                    .EQU    0C1h            ; var iData  byte
UCSRB                   .EQU    0C1h            ; var iData  byte
USR1                    .EQU    0C0h            ; var iData  byte
UCSRA                   .EQU    0C0h            ; var iData  byte
TWAMR                   .EQU    0BDh            ; var iData  byte
TWCR                    .EQU    0BCh            ; var iData  byte
TWDR                    .EQU    0BBh            ; var iData  byte
TWAR                    .EQU    0BAh            ; var iData  byte
TWSR                    .EQU    0B9h            ; var iData  byte
TWBR                    .EQU    0B8h            ; var iData  byte
ASSR                    .EQU    0B6h            ; var iData  byte
OCR2B                   .EQU    0B4h            ; var iData  byte
OCR2A                   .EQU    0B3h            ; var iData  byte
OCR2                    .EQU    0B3h            ; var iData  byte
TCNT2                   .EQU    0B2h            ; var iData  byte
TCCR2B                  .EQU    0B1h            ; var iData  byte
TCCR2A                  .EQU    0B0h            ; var iData  byte
TCCR2                   .EQU    0B1h            ; var iData  byte
OCR1BH                  .EQU    08Bh            ; var iData  byte
OCR1BL                  .EQU    08Ah            ; var iData  byte
OCR1AH                  .EQU    089h            ; var iData  byte
OCR1AL                  .EQU    088h            ; var iData  byte
ICR1H                   .EQU    087h            ; var iData  byte
ICR1L                   .EQU    086h            ; var iData  byte
TCNT1H                  .EQU    085h            ; var iData  byte
TCNT1L                  .EQU    084h            ; var iData  byte
TCCR1C                  .EQU    082h            ; var iData  byte
TCCR1B                  .EQU    081h            ; var iData  byte
TCCR1A                  .EQU    080h            ; var iData  byte
DIDR1                   .EQU    07Fh            ; var iData  byte
DIDR0                   .EQU    07Eh            ; var iData  byte
ADMUX                   .EQU    07Ch            ; var iData  byte
ADCSR                   .EQU    07Ah            ; var iData  byte
ADCSRB                  .EQU    07Bh            ; var iData  byte
ADCSRA                  .EQU    07Ah            ; var iData  byte
ADCH                    .EQU    079h            ; var iData  byte
ADCL                    .EQU    078h            ; var iData  byte
TIMSK2                  .EQU    070h            ; var iData  byte
TIMSK1                  .EQU    06Fh            ; var iData  byte
TIMSK0                  .EQU    06Eh            ; var iData  byte
PCMSK2                  .EQU    06Dh            ; var iData  byte
PCMSK1                  .EQU    06Ch            ; var iData  byte
PCMSK0                  .EQU    06Bh            ; var iData  byte
EICRA                   .EQU    069h            ; var iData  byte
PCICR                   .EQU    068h            ; var iData  byte
OSCCAL                  .EQU    066h            ; var iData  byte
PRR                     .EQU    064h            ; var iData  byte
CLKPR                   .EQU    061h            ; var iData  byte
WDTCR                   .EQU    060h            ; var iData  byte
SREG                    .EQU    05Fh            ; var pData  byte
SPH                     .EQU    05Eh            ; var pData  byte
SPL                     .EQU    05Dh            ; var pData  byte
SPMCR                   .EQU    057h            ; var pData  byte
SPMCSR                  .EQU    057h            ; var pData  byte
MCUCR                   .EQU    055h            ; var pData  byte
MCUCSR                  .EQU    054h            ; var pData  byte
MCUSR                   .EQU    054h            ; var pData  byte
SMCR                    .EQU    053h            ; var pData  byte
MONDR                   .EQU    051h            ; var pData  byte
ACSR                    .EQU    050h            ; var pData  byte
SPDR                    .EQU    04Eh            ; var pData  byte
SPSR                    .EQU    04Dh            ; var pData  byte
SPCR                    .EQU    04Ch            ; var pData  byte
GPIOR2                  .EQU    04Bh            ; var pData  byte
GPIOR1                  .EQU    04Ah            ; var pData  byte
OCR0B                   .EQU    048h            ; var pData  byte
OCR0A                   .EQU    047h            ; var pData  byte
TCNT0                   .EQU    046h            ; var pData  byte
TCCR0B                  .EQU    045h            ; var pData  byte
TCCR0A                  .EQU    044h            ; var pData  byte
TCCR0                   .EQU    045h            ; var pData  byte
GTCCR                   .EQU    043h            ; var pData  byte
EEARL                   .EQU    041h            ; var pData  byte
EEAR                    .EQU    041h            ; var pData  byte
EEDR                    .EQU    040h            ; var pData  byte
EECR                    .EQU    03Fh            ; var pData  byte
GPIOR0                  .EQU    03Eh            ; var pData  byte
GIMSK                   .EQU    03Dh            ; var pData  byte
EIMSK                   .EQU    03Dh            ; var pData  byte
GIFR                    .EQU    03Ch            ; var pData  byte
EIFR                    .EQU    03Ch            ; var pData  byte
PCIFR                   .EQU    03Bh            ; var pData  byte
TIFR2                   .EQU    037h            ; var pData  byte
TIFR1                   .EQU    036h            ; var pData  byte
TIFR0                   .EQU    035h            ; var pData  byte
PORTD                   .EQU    02Bh            ; var pData  byte
DDRD                    .EQU    02Ah            ; var pData  byte
PIND                    .EQU    029h            ; var pData  byte
PORTC                   .EQU    028h            ; var pData  byte
DDRC                    .EQU    027h            ; var pData  byte
PINC                    .EQU    026h            ; var pData  byte
PORTB                   .EQU    025h            ; var pData  byte
DDRB                    .EQU    024h            ; var pData  byte
PINB                    .EQU    023h            ; var pData  byte
OCR1B                   .EQU    08Ah            ; var iData  word
OCR1A                   .EQU    088h            ; var iData  word
ICR1                    .EQU    086h            ; var iData  word
TCNT1                   .EQU    084h            ; var iData  word
ADC                     .EQU    078h            ; var iData  word
_iDataStart             .EQU    100h            ; const 
_iDataEnd               .EQU    2FFh            ; const 
_EEpromStart            .EQU    000h            ; const 
_EEpromEnd              .EQU    0FFh            ; const 
_FlashStart             .EQU    000h            ; const 
_FlashEnd               .EQU    0FFFh           ; const 
parNone                 .EQU    000h            ; const 
parEven                 .EQU    001h            ; const 
parOdd                  .EQU    002h            ; const 
DataBit5                .EQU    000h            ; const 
DataBit6                .EQU    001h            ; const 
DataBit7                .EQU    002h            ; const 
DataBit8                .EQU    003h            ; const 
StopBit1                .EQU    000h            ; const 
StopBit2                .EQU    001h            ; const 
TWI_BR100               .EQU    073h            ; const 
TWI_BR400               .EQU    017h            ; const 
SysTickTime             .EQU    100h            ; var iData  byte
_TWI_TO                 .EQU    101h            ; var iData  byte
TWI_DevLock             .EQU    102h            ; var iData  DeviceLock
EEPROM                  .EQU    000h            ; var EEprom array



                        .RESET     000000h
                        .ORG       0, CODE_START
                        .STARTCODE 000034h

                        .UNIT     SinusGen

                        .XDATASTART -1


                        ; ============ user definitions module: SinusGen ============

SinusGen.DDRBinit       .EQU    0FFh            ; const byte     255
SinusGen.PortBinit      .EQU    0C7h            ; const byte     199
SinusGen.DDRCinit       .EQU    000h            ; const byte     0
SinusGen.PortCinit      .EQU    03Fh            ; const byte     63
SinusGen.DDRDinit       .EQU    0F0h            ; const byte     240
SinusGen.PortDinit      .EQU    0FFh            ; const byte     255
SinusGen.b_SCLK         .EQU    000h            ; const byte     0
SinusGen.b_SDATAOUT     .EQU    001h            ; const byte     1
SinusGen.b_STRDAC       .EQU    003h            ; const byte     3
SinusGen.high           .EQU    0FFh            ; const boolean  true
SinusGen.low            .EQU    000h            ; const boolean  false
SinusGen.SampleTimer96  .EQU    00Fh            ; const byte     15
SinusGen.SampleTimer48  .EQU    01Fh            ; const byte     31
;FreqTabelle             .EQU    '$01E00'; const String

                        .FILE     SinusWaveBytes.pas

                        .FILE     H:\PROJAVR\ADA-C DDS-ULD\Sinus.pas
                        .SYM      DDSL1, 00007h, 0000Dh, 3
SinusGen.DDSL1          .EQU    007h            ; var Data   byte
                        .SYM      DDSH1, 00008h, 0000Dh, 3
SinusGen.DDSH1          .EQU    008h            ; var Data   byte
                        .SYM      DDSL2, 00009h, 0000Dh, 3
SinusGen.DDSL2          .EQU    009h            ; var Data   byte
                        .SYM      DDSH2, 0000Ah, 0000Dh, 3
SinusGen.DDSH2          .EQU    00Ah            ; var Data   byte
                        .SYM      i, 0000Bh, 0000Dh, 3
SinusGen.i              .EQU    00Bh            ; var Data   byte
                        .SYM      n, 00103h, 0000Dh, 3
SinusGen.n              .EQU    103h            ; var iData  byte
                        .SYM      config, 00104h, 0000Dh, 3
SinusGen.config         .EQU    104h            ; var iData  byte
                        .SYM      OldJumper, 00105h, 0000Dh, 3
SinusGen.OldJumper      .EQU    105h            ; var iData  byte
                        .SYM      rxcmd, 00106h, 0000Dh, 3
SinusGen.rxcmd          .EQU    106h            ; var iData  byte
                        .SYM      frequ, 00107h, 0000Eh, 3
SinusGen.frequ          .EQU    107h            ; var iData  word
                        .SYM      I2Ccmd, 00109h, 0000Eh, 3
SinusGen.I2Ccmd         .EQU    109h            ; var iData  word
                        .SYM      Phasenversatz, 0010Bh, 0000Dh, 3
SinusGen.Phasenversatz  .EQU    10Bh            ; var iData  byte
                        .SYM      TabellenSeite, 0010Ch, 0000Dh, 3
SinusGen.TabellenSeite  .EQU    10Ch            ; var iData  byte

                        .FILE     SinusDDSmega.pas
                        .FUNC     DDSstereo, 00001h, 00020h
SinusGen.DDSstereo:
                        .BLOCK    6
                        .ASM
                        ; DDS, aus Zeitgründen etwas geschachtelt
                        .LINE     9
                        lds  _ACCB, SinusGen.Phasenversatz
                        .LINE     10
                        ldi  _ACCA, $00
                        .LINE     11
                        mov  _ACCEHI, _ACCA ;Phasen-Akkumulator und Pointer 1. Kanal
                        .LINE     12
                        mov  _ACCELO, _ACCA ;Phasen-Akkumulator 1
                        .LINE     13
                        mov  _ACCFHI, _ACCB ;Phasen-Akkumulator und Pointer 2. Kanal
                        .LINE     14
                        mov  _ACCFLO, _ACCA ;Phasen-Akkumulator 2
                        .LINE     15
                        mov  _ACCDHI, _ACCA ; 1. Datenbyte
                        .LINE     16
                        mov  _ACCDLO, _ACCA ; 1. Datenbyte
                        .LINE     17
                        lds  _ACCCHI, SinusGen.TabellenSeite ; Seiten-Nummer (Adresse) der Sinus-MSBs
                        .LINE     18
                        mov  _ACCCLO, _ACCA   ;Z-Pointer nullen
                        .LINE     19
                        ldi  _ACCA, 01010000b ;SPI Einschaltwert in _ACCGLO vorladen
                        .LINE     20
                        mov  _ACCGLO, _ACCA
                        .LINE     21
                        mov  _ACCGHI, _ACCA
                        .LINE     22
                        ldi  _ACCA, 01000010b;  // CTC, Toggle OC1 on Timer1
                        .LINE     23
                        out  TCCR0A, _ACCA;     // CTC, Toggle OC1 on Timer1
                        DDSinitLoopStereo:
                        .LINE     25
                        sbis TIFR0,1
                        .LINE     26
                        rjmp  DDSinitLoopStereo ; auf Timer OCF0A warten
                        .LINE     27
                        sbi TIFR0,1          ; ... Timer OCF0A Flag löschen
                        SinusGen.DDSstereoLoop:
                        .LINE     30
                        sbis TIFR0,1
                        .LINE     31
                        rjmp  SinusGen.DDSstereoLoop ; auf Timer OCF0A warten
                        .LINE     32
                        sbi TIFR0,1          ; ... Timer OCF0A Flag löschen
                        .LINE     34
                        sbi PortB,5          ; I2S-Vorimpuls an
                        .LINE     35
                        cbi PortB,5          ; I2S-Vorimpuls aus
                        .LINE     36
                        out SPCR, _ACCGLO      ; SPI einschalten
                        ; nächstes MSB berechnen
                        .LINE     39
                        sbic  PinD,6         ; LRClk Bit high?
                        .LINE     40
                        rjmp DDSstereoCh2    ; anderer Kanal
                        .LINE     42
                        out SPDR, _ACCDHI    ; vorbereitetes MSB ausgeben
                        .LINE     43
                        add  _ACCELO, SinusGen.DDSL1 ; add value to DDS1 accumulator
                        .LINE     44
                        adc  _ACCEHI, SinusGen.DDSH1 ; 1
                        .LINE     45
                        cpi  _ACCEHI, 192            ; Überlauf nach 192 Stützwerten
                        .LINE     46
                        brlo DDSNoSub1
                        .LINE     47
                        subi  _ACCEHI, 192
                        DDSNoSub1:
                        .LINE     49
                        mov  _ACCCLO,_ACCEHI  ; Z=Index für Sinus-Tabelle
                        .LINE     50
                        lds  _ACCCHI, SinusGen.TabellenSeite ; Seiten-Nummer (Adresse) der Sinus-MSBs
                        ; Z zeigt nun auf High-Byte der Sinustabelle Kanal 1
                        .LINE     52
                        LPM  _ACCDHI, Z       ; MSB in Data-Reg HI
                        SPIstereoWaitHi1:
                        .LINE     55
                        in _ACCA, SPSR
                        .LINE     56
                        sbrs _ACCA,7 ; SPIF?
                        .LINE     57
                        rjmp SPIstereoWaitHi1 ; auf Ende des SPI-Transfer warten
                        .LINE     58
                        nop
                        .LINE     60
                        out SPDR, _ACCDLO     ; letztes LSB16 ausgeben
                        ; nächstes LSB berechnen
                        .LINE     62
                        inc  _ACCCHI  ; oberes Byte Z-Register auf Low-Tabelle
                        .LINE     63
                        LPM  _ACCDLO, Z       ; ... neues LSB16 in Data-Reg LO
                        SPIstereoWaitLow1:
                        .LINE     66
                        in _ACCA, SPSR
                        .LINE     67
                        sbrs _ACCA,7 ; SPIF?
                        .LINE     68
                        rjmp SPIstereoWaitLow1;  ; auf Ende des SPI-Transfer warten
                        .LINE     69
                        nop
                        .LINE     70
                        out SPDR, _ACCGHI     ; letztes LSB24 ausgeben
                        ; nächstes LSB berechnen
                        .LINE     72
                        inc  _ACCCHI  ; oberes Byte Z-Register auf Low-Tabelle
                        .LINE     73
                        LPM  _ACCGHI, Z       ; ... neues LSB24 in Data-Reg LO
                        SPIstereoWait24_1:
                        .LINE     75
                        in _ACCA, SPSR
                        .LINE     76
                        sbrs _ACCA,7 ; SPIF?
                        .LINE     77
                        rjmp SPIstereoWait24_1;  ; auf Ende des SPI-Transfer warten
                        .LINE     79
                        ldi _ACCA, 0
                        .LINE     80
                        out SPCR, _ACCA ; SPI ausschalten
                        .LINE     81
                        LDS _ACCA, UCSRA
                        .LINE     82
                        sbrs _ACCA,7
                        .LINE     83
                        rjmp  SinusGen.DDSstereoLoop; auf Receive warten
                        .LINE     84
                        ret
                        DDSstereoCh2:
                        .LINE     87
                        out SPDR, _ACCDHI    ; vorbereitetes MSB ausgeben
                        .LINE     88
                        add  _ACCFLO, SinusGen.DDSL2 ; add value to DDS2 accumulator
                        .LINE     89
                        adc  _ACCFHI, SinusGen.DDSH2 ; 1
                        .LINE     90
                        cpi  _ACCFHI, 192            ; Überlauf nach 192 Stützwerten
                        .LINE     91
                        brlo DDSNoSub2
                        .LINE     92
                        subi  _ACCFHI, 192
                        DDSNoSub2:
                        .LINE     94
                        mov  _ACCCLO,_ACCFHI  ; Z=Index für Sinus-Tabelle
                        .LINE     95
                        lds  _ACCCHI, SinusGen.TabellenSeite ; Seiten-Nummer (Adresse) der Sinus-MSBs
                        ; Z zeigt nun auf High-Byte der Sinustabelle Kanal 1
                        .LINE     97
                        LPM  _ACCDHI, Z       ; MSB in Data-Reg HI
                        SPIstereoWaitHi2:
                        .LINE     100
                        in _ACCA, SPSR
                        .LINE     101
                        sbrs _ACCA,7 ; SPIF?
                        .LINE     102
                        rjmp SPIstereoWaitHi2;  ; auf Ende des SPI-Transfer warten
                        .LINE     103
                        nop
                        .LINE     104
                        out SPDR, _ACCDLO     ; letztes LSB16 ausgeben
                        ; nächstes LSB berechnen
                        .LINE     106
                        inc _ACCCHI           ; oberes Byte Z-Register auf Low-Tabelle
                        .LINE     107
                        LPM  _ACCDLO, Z       ; neues LSB16 in Data-Reg LO
                        .LINE     108
                        mov _ACCCHI, _ACCBHI  ; oberes Byte Z-Register auf High-Tabelle
                        SPIstereoWaitLow2:
                        .LINE     111
                        in _ACCA, SPSR
                        .LINE     112
                        sbrs _ACCA,7 ; SPIF?
                        .LINE     113
                        rjmp SPIstereoWaitLow2;  ; auf Ende des SPI-Transfer warten
                        .LINE     114
                        nop
                        .LINE     116
                        cbi PortD,7          ; PCM56-Latch ein
                        .LINE     117
                        out SPDR, _ACCGHI    ; letztes LSB24 ausgeben
                        ; nächstes LSB berechnen
                        .LINE     119
                        inc  _ACCCHI  ; oberes Byte Z-Register auf Low24-Tabelle
                        .LINE     120
                        LPM  _ACCGHI, Z       ; neues LSB24 in Data-Reg LO
                        .LINE     121
                        sbi PortD,7           ; PCM56-Latch aus
                        SPIstereoWait24_2:
                        .LINE     124
                        in _ACCA, SPSR
                        .LINE     125
                        sbrs _ACCA,7 ; SPIF?
                        .LINE     126
                        rjmp SPIstereoWait24_2;  ; auf Ende des SPI-Transfer warten
                        .LINE     128
                        ldi _ACCA, 0
                        .LINE     129
                        out SPCR, _ACCA ; SPI ausschalten
                        .LINE     133
                        LDS _ACCA, UCSRA
                        .LINE     134
                        sbrs _ACCA,7
                        .LINE     135
                        rjmp  SinusGen.DDSstereoLoop; auf Receive warten
                        .endasm
                        .ENDBLOCK 139
SinusGen.DDSstereo_X:
                        .LINE     139
                        .BRANCH   19
                        RET
                        .ENDFUNC  139


                        .FILE     H:\PROJAVR\ADA-C DDS-ULD\Sinus.pas
                        .FUNC     I2CoutAdr10, 00084h, 00020h
SinusGen.I2CoutAdr10:
                        .BLOCK    134
                        .LINE     135
                        LDD       _ACCA, Y+001h
                        MOV       _ACCB, _ACCA
                        CLR       _ACCA
                        STS       SINUSGEN.I2CCMD, _ACCB
                        STS       SINUSGEN.I2CCMD+1, _ACCA
                        .LINE     136
                        LDS       _ACCB, SinusGen.I2Ccmd
                        LDS       _ACCA, SinusGen.I2Ccmd+1
                        LDI       _ACCALO, 008h
                        RCALL     SYSTEM.SHL16
                        PUSH      _ACCB
                        PUSH      _ACCA
                        LDD       _ACCA, Y+000h
                        MOV       _ACCB, _ACCA
                        CLR       _ACCA
                        POP       _ACCAHI
                        POP       _ACCALO
                        ADD       _ACCB, _ACCALO
                        ADC       _ACCA, _ACCAHI
                        STS       SINUSGEN.I2CCMD, _ACCB
                        STS       SINUSGEN.I2CCMD+1, _ACCA
                        .LINE     137
                        LDI       _ACCA, 010h
                        PUSH      _ACCA
                        LDS       _ACCB, SinusGen.I2Ccmd
                        LDS       _ACCA, SinusGen.I2Ccmd+1
                        MOVW      _ACCALO, _ACCB
                        SET
                        BLD       Flags, _I2C2BYTE
                        POP       _ACCDLO
                        LDI       _ACCBLO, 00000h AND 0FFh
                        LDI       _ACCBHI, 00000h SHRB 8
                        LDI       _ACCDHI, 000h
                        RCALL      SYSTEM.TWIOut
                        .ENDBLOCK 138
SinusGen.I2CoutAdr10_X:
                        .LINE     138
                        .BRANCH   19
                        RET
                        .ENDFUNC  138

                        .FUNC     I2CoutAdr4C, 0008Ch, 00020h
SinusGen.I2CoutAdr4C:
                        .BLOCK    142
                        .LINE     143
                        LDD       _ACCA, Y+001h
                        MOV       _ACCB, _ACCA
                        CLR       _ACCA
                        STS       SINUSGEN.I2CCMD, _ACCB
                        STS       SINUSGEN.I2CCMD+1, _ACCA
                        .LINE     144
                        LDS       _ACCB, SinusGen.I2Ccmd
                        LDS       _ACCA, SinusGen.I2Ccmd+1
                        LDI       _ACCALO, 008h
                        RCALL     SYSTEM.SHL16
                        PUSH      _ACCB
                        PUSH      _ACCA
                        LDD       _ACCA, Y+000h
                        MOV       _ACCB, _ACCA
                        CLR       _ACCA
                        POP       _ACCAHI
                        POP       _ACCALO
                        ADD       _ACCB, _ACCALO
                        ADC       _ACCA, _ACCAHI
                        STS       SINUSGEN.I2CCMD, _ACCB
                        STS       SINUSGEN.I2CCMD+1, _ACCA
                        .LINE     145
                        LDI       _ACCA, 04Ch
                        PUSH      _ACCA
                        LDS       _ACCB, SinusGen.I2Ccmd
                        LDS       _ACCA, SinusGen.I2Ccmd+1
                        MOVW      _ACCALO, _ACCB
                        SET
                        BLD       Flags, _I2C2BYTE
                        POP       _ACCDLO
                        LDI       _ACCBLO, 00000h AND 0FFh
                        LDI       _ACCBHI, 00000h SHRB 8
                        LDI       _ACCDHI, 000h
                        RCALL      SYSTEM.TWIOut
                        .ENDBLOCK 146
SinusGen.I2CoutAdr4C_X:
                        .LINE     146
                        .BRANCH   19
                        RET
                        .ENDFUNC  146

                        .FUNC     initSPDIF, 00094h, 00020h
SinusGen.initSPDIF:
                        .BLOCK    149
                        .LINE     150
                        RCALL     SYSTEM.SYSTICKENABLE
                        .LINE     151
                        PUSH      _FRAMEPTR
                        PUSH      _FPTRHI
                        LDI       _ACCA, 004h
                        ST        -Y, _ACCA
                        .FRAME  1
                        LDI       _ACCA, 000h
                        ST        -Y, _ACCA
                        .FRAME  2
                        .FRAME  0
                        .BRANCH   17,SinusGen.I2COUTADR10
                        RCALL     SinusGen.I2COUTADR10
                        POP       _FPTRHI
                        POP       _FRAMEPTR
                        .LINE     152
                        PUSH      _FRAMEPTR
                        PUSH      _FPTRHI
                        LDI       _ACCA, 001h
                        ST        -Y, _ACCA
                        .FRAME  1
                        LDI       _ACCA, 001h
                        ST        -Y, _ACCA
                        .FRAME  2
                        .FRAME  0
                        .BRANCH   17,SinusGen.I2COUTADR10
                        RCALL     SinusGen.I2COUTADR10
                        POP       _FPTRHI
                        POP       _FRAMEPTR
                        .LINE     153
                        PUSH      _FRAMEPTR
                        PUSH      _FPTRHI
                        LDI       _ACCA, 005h
                        ST        -Y, _ACCA
                        .FRAME  1
                        LDI       _ACCA, 025h
                        ST        -Y, _ACCA
                        .FRAME  2
                        .FRAME  0
                        .BRANCH   17,SinusGen.I2COUTADR10
                        RCALL     SinusGen.I2COUTADR10
                        POP       _FPTRHI
                        POP       _FRAMEPTR
                        .LINE     154
                        PUSH      _FRAMEPTR
                        PUSH      _FPTRHI
                        LDI       _ACCA, 012h
                        ST        -Y, _ACCA
                        .FRAME  1
                        LDI       _ACCA, 000h
                        ST        -Y, _ACCA
                        .FRAME  2
                        .FRAME  0
                        .BRANCH   17,SinusGen.I2COUTADR10
                        RCALL     SinusGen.I2COUTADR10
                        POP       _FPTRHI
                        POP       _FRAMEPTR
                        .LINE     155
                        LDS       _ACCB, 00104h
                        CLR       _ACCA
                        SBRC      _ACCB, 007h
                        SER       _ACCA
                        TST       _ACCA
                        .BRANCH   4,SinusGen._L0002
                        BRNE      SinusGen._L0002
                        .BRANCH   20,SinusGen._L0000
                        RJMP      SinusGen._L0000
SinusGen._L0002:
                        .BLOCK    155
                        .LINE     157
                        PUSH      _FRAMEPTR
                        PUSH      _FPTRHI
                        LDI       _ACCA, 004h
                        ST        -Y, _ACCA
                        .FRAME  1
                        LDI       _ACCA, 040h
                        ST        -Y, _ACCA
                        .FRAME  2
                        .FRAME  0
                        .BRANCH   17,SinusGen.I2COUTADR10
                        RCALL     SinusGen.I2COUTADR10
                        POP       _FPTRHI
                        POP       _FRAMEPTR
                        .ENDBLOCK 158
                        .BRANCH   20,SinusGen._L0001
                        RJMP      SinusGen._L0001
SinusGen._L0000:
                        .BLOCK    158
                        .LINE     159
                        PUSH      _FRAMEPTR
                        PUSH      _FPTRHI
                        LDI       _ACCA, 004h
                        ST        -Y, _ACCA
                        .FRAME  1
                        LDI       _ACCA, 060h
                        ST        -Y, _ACCA
                        .FRAME  2
                        .FRAME  0
                        .BRANCH   17,SinusGen.I2COUTADR10
                        RCALL     SinusGen.I2COUTADR10
                        POP       _FPTRHI
                        POP       _FRAMEPTR
                        .ENDBLOCK 160
SinusGen._L0001:
                        .LINE     163
                        PUSH      _FRAMEPTR
                        PUSH      _FPTRHI
                        LDI       _ACCA, 020h
                        ST        -Y, _ACCA
                        .FRAME  1
                        LDI       _ACCA, 020h
                        ST        -Y, _ACCA
                        .FRAME  2
                        .FRAME  0
                        .BRANCH   17,SinusGen.I2COUTADR10
                        RCALL     SinusGen.I2COUTADR10
                        POP       _FPTRHI
                        POP       _FRAMEPTR
                        .LINE     164
                        PUSH      _FRAMEPTR
                        PUSH      _FPTRHI
                        LDI       _ACCA, 021h
                        ST        -Y, _ACCA
                        .FRAME  1
                        LDI       _ACCA, 011h
                        ST        -Y, _ACCA
                        .FRAME  2
                        .FRAME  0
                        .BRANCH   17,SinusGen.I2COUTADR10
                        RCALL     SinusGen.I2COUTADR10
                        POP       _FPTRHI
                        POP       _FRAMEPTR
                        .LINE     165
                        PUSH      _FRAMEPTR
                        PUSH      _FPTRHI
                        LDI       _ACCA, 022h
                        ST        -Y, _ACCA
                        .FRAME  1
                        LDI       _ACCA, 000h
                        ST        -Y, _ACCA
                        .FRAME  2
                        .FRAME  0
                        .BRANCH   17,SinusGen.I2COUTADR10
                        RCALL     SinusGen.I2COUTADR10
                        POP       _FPTRHI
                        POP       _FRAMEPTR
                        .LINE     166
                        PUSH      _FRAMEPTR
                        PUSH      _FPTRHI
                        LDI       _ACCA, 023h
                        ST        -Y, _ACCA
                        .FRAME  1
                        LDI       _ACCA, 048h
                        ST        -Y, _ACCA
                        .FRAME  2
                        .FRAME  0
                        .BRANCH   17,SinusGen.I2COUTADR10
                        RCALL     SinusGen.I2COUTADR10
                        POP       _FPTRHI
                        POP       _FRAMEPTR
                        .LINE     167
                        PUSH      _FRAMEPTR
                        PUSH      _FPTRHI
                        LDI       _ACCA, 024h
                        ST        -Y, _ACCA
                        .FRAME  1
                        LDI       _ACCA, 0C6h
                        ST        -Y, _ACCA
                        .FRAME  2
                        .FRAME  0
                        .BRANCH   17,SinusGen.I2COUTADR10
                        RCALL     SinusGen.I2COUTADR10
                        POP       _FPTRHI
                        POP       _FRAMEPTR
                        .LINE     168
                        PUSH      _FRAMEPTR
                        PUSH      _FPTRHI
                        LDI       _ACCA, 025h
                        ST        -Y, _ACCA
                        .FRAME  1
                        LDI       _ACCA, 0B6h
                        ST        -Y, _ACCA
                        .FRAME  2
                        .FRAME  0
                        .BRANCH   17,SinusGen.I2COUTADR10
                        RCALL     SinusGen.I2COUTADR10
                        POP       _FPTRHI
                        POP       _FRAMEPTR
                        .LINE     169
                        PUSH      _FRAMEPTR
                        PUSH      _FPTRHI
                        LDI       _ACCA, 026h
                        ST        -Y, _ACCA
                        .FRAME  1
                        LDI       _ACCA, 0F4h
                        ST        -Y, _ACCA
                        .FRAME  2
                        .FRAME  0
                        .BRANCH   17,SinusGen.I2COUTADR10
                        RCALL     SinusGen.I2COUTADR10
                        POP       _FPTRHI
                        POP       _FRAMEPTR
                        .LINE     170
                        PUSH      _FRAMEPTR
                        PUSH      _FPTRHI
                        LDI       _ACCA, 027h
                        ST        -Y, _ACCA
                        .FRAME  1
                        LDI       _ACCA, 0C6h
                        ST        -Y, _ACCA
                        .FRAME  2
                        .FRAME  0
                        .BRANCH   17,SinusGen.I2COUTADR10
                        RCALL     SinusGen.I2COUTADR10
                        POP       _FPTRHI
                        POP       _FRAMEPTR
                        .LINE     171
                        PUSH      _FRAMEPTR
                        PUSH      _FPTRHI
                        LDI       _ACCA, 028h
                        ST        -Y, _ACCA
                        .FRAME  1
                        LDI       _ACCA, 0E4h
                        ST        -Y, _ACCA
                        .FRAME  2
                        .FRAME  0
                        .BRANCH   17,SinusGen.I2COUTADR10
                        RCALL     SinusGen.I2COUTADR10
                        POP       _FPTRHI
                        POP       _FRAMEPTR
                        .LINE     172
                        PUSH      _FRAMEPTR
                        PUSH      _FPTRHI
                        LDI       _ACCA, 029h
                        ST        -Y, _ACCA
                        .FRAME  1
                        LDI       _ACCA, 02Eh
                        ST        -Y, _ACCA
                        .FRAME  2
                        .FRAME  0
                        .BRANCH   17,SinusGen.I2COUTADR10
                        RCALL     SinusGen.I2COUTADR10
                        POP       _FPTRHI
                        POP       _FRAMEPTR
                        .LINE     174
                        RCALL     SYSTEM.SYSTICKDISABLE
                        .ENDBLOCK 175
SinusGen.initSPDIF_X:
                        .LINE     175
                        .BRANCH   19
                        RET
                        .ENDFUNC  175

                        .FUNC     initDA, 000B1h, 00020h
SinusGen.initDA:
                        .BLOCK    178
                        .LINE     179
                        RCALL     SYSTEM.SYSTICKENABLE
                        .LINE     180
                        PUSH      _FRAMEPTR
                        PUSH      _FPTRHI
                        LDI       _ACCA, 008h
                        ST        -Y, _ACCA
                        .FRAME  1
                        LDI       _ACCA, 040h
                        ST        -Y, _ACCA
                        .FRAME  2
                        .FRAME  0
                        .BRANCH   17,SinusGen.I2COUTADR4C
                        RCALL     SinusGen.I2COUTADR4C
                        POP       _FPTRHI
                        POP       _FRAMEPTR
                        .LINE     181
                        PUSH      _FRAMEPTR
                        PUSH      _FPTRHI
                        LDI       _ACCA, 002h
                        ST        -Y, _ACCA
                        .FRAME  1
                        LDI       _ACCA, 010h
                        ST        -Y, _ACCA
                        .FRAME  2
                        .FRAME  0
                        .BRANCH   17,SinusGen.I2COUTADR4C
                        RCALL     SinusGen.I2COUTADR4C
                        POP       _FPTRHI
                        POP       _FRAMEPTR
                        .LINE     182
                        RCALL     SYSTEM.SYSTICKDISABLE
                        .ENDBLOCK 183
SinusGen.initDA_X:
                        .LINE     183
                        .BRANCH   19
                        RET
                        .ENDFUNC  183

                        .FUNC     initall, 000BCh, 00020h
SinusGen.initall:
                        .BLOCK    190
                        .LINE     191
                        LDI       _ACCA, 0FFh
                        OUT       DDRB, _ACCA
                        .LINE     192
                        LDI       _ACCA, 0C7h
                        OUT       PORTB, _ACCA
                        .LINE     193
                        LDI       _ACCA, 000h
                        OUT       DDRC, _ACCA
                        .LINE     194
                        LDI       _ACCA, 03Fh
                        OUT       PORTC, _ACCA
                        .LINE     195
                        LDI       _ACCA, 0F0h
                        OUT       DDRD, _ACCA
                        .LINE     196
                        LDI       _ACCA, 0FFh
                        OUT       PORTD, _ACCA
                        .LINE     197
                        LDI       _ACCA, 007h
                        LDI       _ACCCLO, SinusGen.FreqTabelle AND 0FFh
                        LDI       _ACCCHI, SinusGen.FreqTabelle SHRB 8
                        ANDI      _ACCA, 15
                        CLR       _ACCB
                        LSL       _ACCA
                        ROL       _ACCB
                        ADD       _ACCCLO, _ACCA
                        ADC       _ACCCHI, _ACCB
                        LPM       _ACCB, Z+
                        LPM       _ACCA, Z
                        STS       SINUSGEN.FREQU, _ACCB
                        STS       SINUSGEN.FREQU+1, _ACCA
                        .LINE     198
                        LDI       _ACCA, 000h
                        STS       SINUSGEN.PHASENVERSATZ, _ACCA
                        .LINE     199
                        LDI       _ACCA, 00Ah
                        STS       SINUSGEN.TABELLENSEITE, _ACCA
                        .LINE     200
                        IN        _ACCA, PinC
                        LSL       _ACCA
                        LSL       _ACCA
                        LSL       _ACCA
                        LSL       _ACCA
                        MOV       SINUSGEN.I, _ACCA
                        .LINE     201
                        MOV       _ACCA, SinusGen.i
                        COM       _ACCA
                        ANDI      _ACCA, 0F0h
                        STS       SINUSGEN.CONFIG, _ACCA
                        .LINE     202
                        LDS       _ACCB, 00104h
                        CLR       _ACCA
                        SBRC      _ACCB, 007h
                        SER       _ACCA
                        TST       _ACCA
                        .BRANCH   4,SinusGen._L0005
                        BRNE      SinusGen._L0005
                        .BRANCH   20,SinusGen._L0003
                        RJMP      SinusGen._L0003
SinusGen._L0005:
                        .BLOCK    202
                        .LINE     203
                        LDI       _ACCA, 011h
                        STS       SINUSGEN.N, _ACCA
                        .ENDBLOCK 204
                        .BRANCH   20,SinusGen._L0004
                        RJMP      SinusGen._L0004
SinusGen._L0003:
                        .BLOCK    204
                        .LINE     205
                        LDI       _ACCA, 007h
                        STS       SINUSGEN.N, _ACCA
                        .LINE     206
                        LDS       _ACCB, SinusGen.frequ
                        LDS       _ACCA, SinusGen.frequ+1
                        LSL       _ACCB
                        ROL       _ACCA
                        STS       SINUSGEN.FREQU, _ACCB
                        STS       SINUSGEN.FREQU+1, _ACCA
                        .ENDBLOCK 207
SinusGen._L0004:
                        .LINE     208
                        .LOOP
                        LDI       _ACCCLO, SinusGen.i AND 0FFh
                        LDI       _ACCCHI, SinusGen.i SHRB 8
                        ST        -Y, _ACCCHI
                        ST        -Y, _ACCCLO
                        .FRAME  2
                        LDI       _ACCA, 000h
                        ST        Z, _ACCA
                        LDS       _ACCA, SinusGen.n
                        ST        -Y, _ACCA
                        .FRAME  3
                        LD        _ACCA, Z
SinusGen._L0008:
                        LDD       _ACCB, Y+000h
                        CP        _ACCB, _ACCA
                        LDI       _ACCA, 0FFh
                        BRLO      SinusGen._L0009
                        CLR       _ACCA
SinusGen._L0009:
                        TST       _ACCA
                        .BRANCH   3,SinusGen._L0010
                        BREQ      SinusGen._L0010
                        .BRANCH   20,SinusGen._L0007
                        RJMP      SinusGen._L0007
SinusGen._L0010:
                        .BLOCK    209
                        .LINE     209
                        CLR       _ACCA
                        SBIC      02Bh, 004h
                        SER       _ACCA
                        COM       _ACCA
                        CLT
                        TST       _ACCA
                        BREQ      SinusGen._L0011
                        SET
SinusGen._L0011:
                        IN        _ACCA, 0002Bh
                        BLD       _ACCA, 004h
                        OUT       0002Bh, _ACCA
                        .LINE     210
                        LDI       _ACCA, 00078h SHRB 8
                        LDI       _ACCB, 00078h AND 0FFh
                        .FRAME  3
                        RCALL     SYSTEM.MDELAY
                        .ENDBLOCK 211
SinusGen._L0006:
                        .LINE     211
                        LDD       _ACCCLO, Y+001h
                        LDD       _ACCCHI, Y+002h
                        LD        _ACCA, Z
                        INC       _ACCA
                        ST        Z, _ACCA
                        TST       _ACCA
                        .BRANCH   3,SinusGen._L0007
                        BREQ      SinusGen._L0007
                        .BRANCH   20,SinusGen._L0008
                        RJMP      SinusGen._L0008
SinusGen._L0007:
                        ADIW      _FRAMEPTR, 3
                        .FRAME  0
                        .ENDLOOP
                        .LINE     212
                        SBI       0002Bh, 005h
                        .LINE     213
                        CBI       0002Bh, 004h
                        .LINE     214
                        .BRANCH   17,SinusGen.INITDA
                        RCALL     SinusGen.INITDA
                        .ENDBLOCK 215
SinusGen.initall_X:
                        .LINE     215
                        .BRANCH   19
                        RET
                        .ENDFUNC  215



                        ; ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
                        ; Program body
                        ; ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

                        .FUNC     $_Main, 000DAh, 00020h
                        .ENTRYMAIN $
SinusGen.$_Main:

                        .BLOCK    218
                        .LINE     219
                        .BRANCH   17,SinusGen.INITALL
                        RCALL     SinusGen.INITALL
                        .LINE     220
                        LDI       _ACCA, 002h
                        OUT       TCCR0B, _ACCA
SinusGen._L0012:
                        .BLOCK    221
                        .LINE     222
                        LDS       _ACCB, SinusGen.frequ
                        LDS       _ACCA, SinusGen.frequ+1
                        MOV       SINUSGEN.DDSH2, _ACCA
                        .LINE     223
                        LDS       _ACCB, SinusGen.frequ
                        LDS       _ACCA, SinusGen.frequ+1
                        MOV       _ACCA, _ACCB
                        MOV       SINUSGEN.DDSL2, _ACCA
                        .LINE     225
                        LDS       _ACCB, 00104h
                        CLR       _ACCA
                        SBRC      _ACCB, 007h
                        SER       _ACCA
                        TST       _ACCA
                        .BRANCH   4,SinusGen._L0016
                        BRNE      SinusGen._L0016
                        .BRANCH   20,SinusGen._L0014
                        RJMP      SinusGen._L0014
SinusGen._L0016:
                        .BLOCK    225
                        .LINE     226
                        LDI       _ACCA, 00Fh
                        OUT       OCR0A, _ACCA
                        .LINE     227
                        LDI       _ACCA, 001h
                        OUT       SPSR, _ACCA
                        .LINE     228
                        LDI       _ACCA, 002h
                        MOV       SINUSGEN.DDSH1, _ACCA
                        .LINE     229
                        LDI       _ACCA, 000h
                        MOV       SINUSGEN.DDSL1, _ACCA
                        .ENDBLOCK 230
                        .BRANCH   20,SinusGen._L0015
                        RJMP      SinusGen._L0015
SinusGen._L0014:
                        .BLOCK    230
                        .LINE     231
                        LDI       _ACCA, 01Fh
                        OUT       OCR0A, _ACCA
                        .LINE     232
                        LDI       _ACCA, 000h
                        OUT       SPSR, _ACCA
                        .LINE     233
                        LDI       _ACCA, 004h
                        MOV       SINUSGEN.DDSH1, _ACCA
                        .LINE     234
                        LDI       _ACCA, 000h
                        MOV       SINUSGEN.DDSL1, _ACCA
                        .ENDBLOCK 235
SinusGen._L0015:
                        .LINE     236
                        .BRANCH   17,SinusGen.INITSPDIF
                        RCALL     SinusGen.INITSPDIF
                        .LINE     237
                        LDS       _ACCB, 00104h
                        CLR       _ACCA
                        SBRC      _ACCB, 006h
                        SER       _ACCA
                        COM       _ACCA
                        TST       _ACCA
                        .BRANCH   4,SinusGen._L0019
                        BRNE      SinusGen._L0019
                        .BRANCH   20,SinusGen._L0017
                        RJMP      SinusGen._L0017
SinusGen._L0019:
                        .BLOCK    237
                        .LINE     238
                        MOV       _ACCA, SinusGen.DDSH2
                        MOV       SINUSGEN.DDSH1, _ACCA
                        .LINE     239
                        MOV       _ACCA, SinusGen.DDSL2
                        MOV       SINUSGEN.DDSL1, _ACCA
                        .ENDBLOCK 240
SinusGen._L0017:
SinusGen._L0018:
                        .LINE     241
                        LDS       _ACCB, 00104h
                        CLR       _ACCA
                        SBRC      _ACCB, 005h
                        SER       _ACCA
                        TST       _ACCA
                        .BRANCH   4,SinusGen._L0022
                        BRNE      SinusGen._L0022
                        .BRANCH   20,SinusGen._L0020
                        RJMP      SinusGen._L0020
SinusGen._L0022:
                        .BLOCK    241
                        .LINE     242
                        LDI       _ACCA, 000h
                        MOV       SINUSGEN.DDSH1, _ACCA
                        .LINE     243
                        LDI       _ACCA, 000h
                        MOV       SINUSGEN.DDSL1, _ACCA
                        .ENDBLOCK 244
SinusGen._L0020:
SinusGen._L0021:
                        .LINE     245
                        LDS       _ACCB, 00104h
                        CLR       _ACCA
                        SBRC      _ACCB, 004h
                        SER       _ACCA
                        TST       _ACCA
                        .BRANCH   4,SinusGen._L0025
                        BRNE      SinusGen._L0025
                        .BRANCH   20,SinusGen._L0023
                        RJMP      SinusGen._L0023
SinusGen._L0025:
                        .BLOCK    245
                        .LINE     246
                        LDI       _ACCA, 000h
                        MOV       SINUSGEN.DDSH2, _ACCA
                        .LINE     247
                        LDI       _ACCA, 000h
                        MOV       SINUSGEN.DDSL2, _ACCA
                        .ENDBLOCK 248
SinusGen._L0023:
SinusGen._L0024:
                        .LINE     249
                        .BRANCH   17,SinusGen.DDSSTEREO
                        RCALL     SinusGen.DDSSTEREO
                        .LINE     250
                        LDS       _ACCA, UDR1
                        STS       SINUSGEN.CONFIG, _ACCA
                        .LINE     251
                        LDS       _ACCA, SinusGen.config
                        ANDI      _ACCA, 00Fh
                        MOV       SINUSGEN.I, _ACCA
                        .LINE     252
                        MOV       _ACCA, SinusGen.i
                        LDI       _ACCCLO, SinusGen.FreqTabelle AND 0FFh
                        LDI       _ACCCHI, SinusGen.FreqTabelle SHRB 8
                        ANDI      _ACCA, 15
                        CLR       _ACCB
                        LSL       _ACCA
                        ROL       _ACCB
                        ADD       _ACCCLO, _ACCA
                        ADC       _ACCCHI, _ACCB
                        LPM       _ACCB, Z+
                        LPM       _ACCA, Z
                        STS       SINUSGEN.FREQU, _ACCB
                        STS       SINUSGEN.FREQU+1, _ACCA
                        .LINE     253
                        LDS       _ACCB, 00104h
                        CLR       _ACCA
                        SBRC      _ACCB, 007h
                        SER       _ACCA
                        COM       _ACCA
                        TST       _ACCA
                        .BRANCH   4,SinusGen._L0028
                        BRNE      SinusGen._L0028
                        .BRANCH   20,SinusGen._L0026
                        RJMP      SinusGen._L0026
SinusGen._L0028:
                        .BLOCK    253
                        .LINE     254
                        LDS       _ACCB, SinusGen.frequ
                        LDS       _ACCA, SinusGen.frequ+1
                        LSL       _ACCB
                        ROL       _ACCA
                        STS       SINUSGEN.FREQU, _ACCB
                        STS       SINUSGEN.FREQU+1, _ACCA
                        .ENDBLOCK 255
SinusGen._L0026:
SinusGen._L0027:
                        .ENDBLOCK 256
                        .LINE     256
                        .BRANCH   20,SinusGen._L0012
                        RJMP      SinusGen._L0012
SinusGen._L0013:
                        .ENDBLOCK 257

SinusGen.$_MAINEX:
                        .LINE     257
                        NOP
                        .LINE     257
                        .BRANCH   20,SinusGen.$_MAINEX
                        RJMP      SinusGen.$_MAINEX


                        .ENDFUNC  257

SYSTEM.$Main_stk        .EQU    0010Dh          ; var iData  Process stack area
SYSTEM.$Main_stk_e      .EQU    0011Ch          ; var iData  Process stack area
SYSTEM.$Main_reg        .EQU    0011Dh          ; var iData  Process register area
SYSTEM.$Main_reg_e      .EQU    0012Dh          ; var iData  Process register area
SYSTEM.$Main_Frame      .EQU    0012Eh          ; var iData  Process stack area
SYSTEM.$Main_Frame_e    .EQU    0013Dh          ; var iData  Process stack area

                        ; ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
                        ; Initialisation and Library Routines
                        ; ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

                        .ENTRY
SYSTEM.RESET:
                        CLI
                        ; >> Stack Init [main process only] <<
                        LDI       _ACCA, 001h
                        LDI       _ACCB, 01Ch
                        OUT       sph, _ACCA
                        OUT       spl, _ACCB


                        ; >> Memory Init <<
                        CLR       _ACCA
                        LDI       _ACCCLO, 16
                        LDI       _ACCCHI, 0
                        LDI       _ACCBLO, 0
                        LDI       _ACCBHI, 0
                        ADIW      _ACCCLO, 1
SYSTEM._L0029:
                        SBIW      _ACCCLO, 001h
                        BREQ      SYSTEM._L0031
SYSTEM._L0030:
                        ST        X+, _ACCA
                        RJMP      SYSTEM._L0029
SYSTEM._L0031:
                        LDI       _ACCBLO, 00100h AND 0FFh
                        LDI       _ACCBHI, 00100h SHRB 8
                        LDI       _ACCCLO, 00200h AND 0FFh
                        LDI       _ACCCHI, 00200h SHRB 8
                        ADIW      _ACCCLO, 1
SYSTEM._L0032:
                        SBIW      _ACCCLO, 001h
                        BREQ      SYSTEM._L0034
SYSTEM._L0033:
                        ST        X+, _ACCA
                        RJMP      SYSTEM._L0032
SYSTEM._L0034:
                        LDI       _FRAMEPTR, 0013Dh AND 0FFh
                        LDI       _FPTRHI, 0013Dh SHRB 8

                        CLI
                        LDI       _ACCA, 0FEH ROLB IntFlag
                        AND       Flags, _ACCA

                        ; ============ init structured constants ============
                        ; >> Hardware Init <<

                        ; >> SysTick init: 10msec <<
                        ; >> real SysTick (exact): 10.000 msec <<
                        LDI       _ACCA, 010h
                        STS       SysTickTime, _ACCA
                        STS       tcnt2, _ACCA
                        LDI       _ACCA, 7
                        STS       tccr2, _ACCA
                        LDI       _ACCA, 001h
                        STS       timsk2, _ACCA

                        ; >> SERPORT Init <<
                        ; >> Baudrate 19200Baud <<
                        
                        ; percent Baudrate error : >> 0.000% <<
                        LDI       _ACCA, 018h
                        STS       ucr1, _ACCA
                        LDI       _ACCA, 04Fh
                        STS       ubrr1, _ACCA
                        LDI       _ACCA, 000h
                        STS       ubrrh, _ACCA
                        LDI       _ACCA, 006h
                        STS       ucsrc, _ACCA
                        LDS       _ACCA, UDR1

                        ; >> TWIPORT Init <<
                        LDI       _ACCA, 017h
                        STS       TWBR, _ACCA
                        LDI       _ACCA, 0FFh
                        STS       TWI_DevLock, _ACCA

                        CLR       Flags
                        CLR       Flags2

                        ; ============ Start User Main Program ============

                        .DEB      MAINENTRY
                        RJMP      SinusGen.$_Main

                        ; ============ Interrupt Service ============

SYSTEM.$INTERRUPT_TIMER2:
                        .DEB      SYSTICKENTRY
                        PUSH      _ACCCLO
                        PUSH      _ACCCHI
                        PUSH      _ACCB
                        PUSH      _ACCA
                        IN        _ACCA, SREG
                        PUSH      _ACCA
                        LDS       _ACCA, SysTickTime
                        LDS       _ACCB, tcnt2
                        ADD       _ACCA, _ACCB
                        STS       tcnt2, _ACCA
                        LDI       _ACCA, 0FEH ROLB IntFlag
                        AND       Flags, _ACCA
                        LDS       _ACCB, _TWI_TO
                        TST       _ACCB
                        BREQ      SYSTEM._L0035
                        DEC       _ACCB
                        STS       _TWI_TO, _ACCB
SYSTEM._L0035:
                        LDI       _ACCA, 1 SHLB IntFlag
                        OR        Flags, _ACCA
                        POP       _ACCA
                        OUT       SREG, _ACCA
                        POP       _ACCA
                        POP       _ACCB
                        POP       _ACCCHI
                        POP       _ACCCLO
                        .DEB      SYSTICKEXIT
                        RETI


                        ; ============ Library ============

SYSTEM.TWISTARTB:
                        LDI       _ACCA, 0
                        STS       TWI_DevLock, _ACCA
                        LDS       _ACCA, TWSR
                        ANDI      _ACCA, 0FCh
                        CPI       _ACCA, 000h
                        BRNE      SYSTEM._L0038
                        LDI       _ACCA, 090h
                        STS       TWCR, _ACCA
SYSTEM._L0038:
                        LDI       _ACCA, 0A4h
                        STS       TWCR, _ACCA
                        LDI       _ACCA, 10
                        STS       _TWI_TO, _ACCA
SYSTEM._L0036:
                        LDS       _ACCA, TWCR
                        ANDI      _ACCA, 080h
                        BRNE      SYSTEM._L0039
                        LDS       _ACCA, _TWI_TO
                        TST       _ACCA
                        BRNE      SYSTEM._L0036
                        STS       TWCR, _ACCA
                        RJMP      SYSTEM.TWI_ERROR
SYSTEM._L0039:
                        LDS       _ACCA, TWSR
                        ANDI      _ACCA, 0FCh
                        CPI       _ACCA, 008h
                        BRNE      SYSTEM._L0043
                        RJMP      SYSTEM.TWI_ERROR
SYSTEM._L0043:
                        RJMP      SYSTEM.TWI_OK

SYSTEM.TWISTOPB:
SYSTEM._L0044:
                        LDS       _ACCA, TWSR
                        ANDI      _ACCA, 0FCh
                        CPI       _ACCA, 0F8h
                        BREQ      SYSTEM._L0044
                        CPI       _ACCA, 000h
                        BRNE      SYSTEM._L0045
                        LDI       _ACCA, 090h
                        STS       TWCR, _ACCA
                        NOP
SYSTEM._L0045:
                        LDI       _ACCB, 094h
                        STS       TWCR, _ACCB
                        SER       _ACCA
                        STS       TWI_DevLock, _ACCA
                        RET

SYSTEM.TWISENDBYTE:
                        STS       TWDR, _ACCDLO
                        LDI       _ACCA, 084h
                        STS       TWCR, _ACCA
                        LDI       _ACCA, 10
                        STS       _TWI_TO, _ACCA
SYSTEM._L0047:
                        LDS       _ACCA, TWCR
                        ANDI      _ACCA, 080h
                        BRNE      SYSTEM._L0048
                        LDS       _ACCA, _TWI_TO
                        TST       _ACCA
                        BRNE      SYSTEM._L0047
                        RJMP      SYSTEM.TWI_ERROR
SYSTEM._L0048:
                        LDS       _ACCA, TWSR
                        ANDI      _ACCA, 0FCh
                        CPI       _ACCA, 028h
                        BREQ      SYSTEM.TWI_OK
                        CPI       _ACCA, 018h
                        BREQ      SYSTEM.TWI_OK
                        CPI       _ACCA, 040h
                        BREQ      SYSTEM.TWI_OK
                        RJMP      SYSTEM.TWI_ERROR

SYSTEM.TWIRECVBYTE:
                        LDI       _ACCA, 0C4h
                        STS       TWCR, _ACCA
                        SBIW      _ACCBLO, 1
                        BRMI      SYSTEM.TWISTOPB
                        BRNE      SYSTEM._L0049
                        LDI       _ACCA, 084h
SYSTEM._L0049:
                        STS       TWCR, _ACCA
SYSTEM._L0050:
                        LDS       _ACCA, TWCR
                        SBRS      _ACCA, 7
                        RJMP      SYSTEM._L0050
                        LDS       _ACCA, TWSR
                        ANDI      _ACCA, 0FCh
                        CPI       _ACCA, 058h
                        BREQ      SYSTEM._L0052
                        CPI       _ACCA, 050h
                        BRNE      SYSTEM.TWI_ERROR
SYSTEM._L0052:
                        LDS       _ACCA, TWDR
                        ST        Z+, _ACCA
                        RJMP      SYSTEM.TWIRECVBYTE
SYSTEM.TWI_OK:
                        LDI       _ACCA, true
                        RET
SYSTEM.TWI_ERROR:
                        LDS       _ACCA, TWSR
                        ANDI      _ACCA, 0FCh
                        CPI       _ACCA, 000h
                        BRNE      SYSTEM._L0051
                        LDI       _ACCA, 090h
                        STS       TWCR, _ACCA
SYSTEM._L0051:
                        LDI       _ACCA, false
                        RET

SYSTEM.TWISTAT:
                        MOV       _ACCDLO, _ACCA
                        RCALL     SYSTEM.TWISTARTB
                        CLC
                        ROL       _ACCDLO
                        RCALL     SYSTEM.TWISENDBYTE
                        MOV       _ACCBHI, _ACCA
                        RCALL     SYSTEM.TWISTOPB
                        MOV       _ACCA, _ACCBHI
                        RET

SYSTEM.TWIOUT:
                        RCALL     SYSTEM.TWISTARTB
                        CLC
                        ROL       _ACCDLO
                        RCALL     SYSTEM.TWISENDBYTE
                        TST       _ACCA
                        BREQ      SYSTEM._L0058
SYSTEM._L0053:
                        MOV       _ACCDLO, _ACCAHI
                        RCALL     SYSTEM.TWISENDBYTE
                        TST       _ACCA
                        BREQ      SYSTEM._L0058
                        BST       Flags, _I2C2BYTE
                        BRTC      SYSTEM._L0057
                        MOV       _ACCDLO, _ACCALO
SYSTEM._L0055:
                        RCALL     SYSTEM.TWISENDBYTE
                        TST       _ACCA
                        BREQ      SYSTEM._L0058
SYSTEM._L0057:
                        TST       _ACCBLO
                        BRNE       SYSTEM._L0062
                        TST       _ACCBHI
                        BREQ       SYSTEM._L0056
SYSTEM._L0062:
                        TST       _ACCDHI
                        BRNE      SYSTEM._L0059
                        LD        _ACCDLO, Z+
                        RJMP      SYSTEM._L0061
SYSTEM._L0059:
                        CPI       _ACCDHI, 1
                        BRNE      SYSTEM._L0060
                        LPM       _ACCDLO, Z+
                        RJMP      SYSTEM._L0061
SYSTEM._L0060:
                        RCALL     SYSTEM.ReadEEp8D
                        ADIW      _ACCCLO, 01h
SYSTEM._L0061:
                        SBIW      _ACCBLO, 1
                        RJMP      SYSTEM._L0055
SYSTEM._L0056:
                        RCALL     SYSTEM.TWISTOPB
                        RJMP      SYSTEM.TWI_OK
SYSTEM._L0058:
                        RCALL     SYSTEM.TWI_ERROR
                        SER       _ACCB
                        STS       TWI_DevLock, _ACCB
                        CLR       _ACCA
                        RET

SYSTEM.SaveAllRegs:
                        POP       $_SaveRet1
                        POP       $_SaveRet
                        STS       SYSTEM.$Main_reg, _ACCA
                        STS       SYSTEM.$Main_reg+1, _ACCB
                        IN        _ACCA, SREG
                        PUSH      _ACCA
                        STS       SYSTEM.$Main_reg+2, _ACCAHI
                        STS       SYSTEM.$Main_reg+3, _ACCALO
                        STS       SYSTEM.$Main_reg+4, _ACCBHI
                        STS       SYSTEM.$Main_reg+5, _ACCBLO
                        STS       SYSTEM.$Main_reg+6, _ACCCHI
                        STS       SYSTEM.$Main_reg+7, _ACCCLO
                        STS       SYSTEM.$Main_reg+8, _ACCDHI
                        STS       SYSTEM.$Main_reg+9, _ACCDLO
                        STS       SYSTEM.$Main_reg+10, _ACCEHI
                        STS       SYSTEM.$Main_reg+11, _ACCELO
                        STS       SYSTEM.$Main_reg+12, Flags
                        STS       SYSTEM.$Main_reg+13, _ACCGLO
                        STS       SYSTEM.$Main_reg+14, _ACCFHI
                        STS       SYSTEM.$Main_reg+15, _ACCFLO
                        STS       SYSTEM.$Main_reg+16, _ACCGHI
                        CLT
                        BLD       Flags, IntFlag
                        MOVW      _ACCCLO, $_SaveRet
                        IJMP

SYSTEM.RestoreAllRegs:
                        LDS       _ACCA, SYSTEM.$Main_reg
                        LDS       _ACCB, SYSTEM.$Main_reg+1
                        LDS       _ACCAHI, SYSTEM.$Main_reg+2
                        LDS       _ACCALO, SYSTEM.$Main_reg+3
                        LDS       _ACCBHI, SYSTEM.$Main_reg+4
                        LDS       _ACCBLO, SYSTEM.$Main_reg+5
                        LDS       _ACCCHI, SYSTEM.$Main_reg+6
                        LDS       _ACCCLO, SYSTEM.$Main_reg+7
                        LDS       _ACCDHI, SYSTEM.$Main_reg+8
                        LDS       _ACCDLO, SYSTEM.$Main_reg+9
                        LDS       _ACCEHI, SYSTEM.$Main_reg+10
                        LDS       _ACCELO, SYSTEM.$Main_reg+11
                        LDS       Flags, SYSTEM.$Main_reg+12
                        LDS       _ACCGLO, SYSTEM.$Main_reg+13
                        LDS       _ACCFHI, SYSTEM.$Main_reg+14
                        LDS       _ACCFLO, SYSTEM.$Main_reg+15
                        LDS       _ACCGHI, SYSTEM.$Main_reg+16
                        SET
                        BLD       Flags, IntFlag
                        RET

SYSTEM.MDELAY:
                        .DEB      DEBdelay
                        MOVW      _ACCDLO, _ACCB
                        CLR       _ACCA
                        CP        _ACCDLO, _ACCA
                        CPC       _ACCDHI, _ACCA
                        BREQ      SYSTEM.MDELAY3
SYSTEM.MDELAY1:
                        LDI       _ACCB, 01329h AND 0FFh
                        LDI       _ACCA, 01329h SHRB 8
SYSTEM.MDELAY2:
                        SUBI      _ACCB, 001h
                        SBCI      _ACCA, 000h
                        NOP
                        BRNE      SYSTEM.MDELAY2
                        SUBI      _ACCDLO, 001h
                        SBCI      _ACCDHI, 000h
                        BRNE      SYSTEM.MDELAY1
SYSTEM.MDELAY3:
                        RET

SYSTEM.SysTickDisable:
                        LDS       _ACCA, timsk2
                        CBR       _ACCA, 001h
                        STS       timsk2, _ACCA
                        RET

SYSTEM.SysTickEnable:
                        LDS       _ACCA, timsk2
                        SBR       _ACCA, 001h
                        STS       timsk2, _ACCA
                        RET

SYSTEM.BlockCopyC:
SYSTEM._L0065:
                        SUBI      _ACCALO, 001h
                        SBCI      _ACCAHI, 000h
                        BRCS      SYSTEM._L0066
                        LD        _ACCA, Z+
                        ST        X+, _ACCA
                        RJMP      SYSTEM._L0065
SYSTEM._L0066:
                        RET

SYSTEM._EEpWaitReady:
                        SBRC      Flags, IntFlag
                        SEI
                        SBIC      eecr, 1
                        RJMP      SYSTEM._EEpWaitReady

                        CLI
                        SBIC      eecr, 1
                        RJMP      SYSTEM._EEpWaitReady

                        RET

SYSTEM.ReadEEp8D:
                        RCALL     SYSTEM._EEpWaitReady
                        OUT       eear, _ACCCLO
                        SBI       eecr, 0
                        NOP
                        IN        _ACCDLO, eedr
                        SBRC      Flags, IntFlag
                        SEI
                        RET


SYSTEM.SHL16:
                        TST       _ACCALO
                        BREQ      SYSTEM._L0068
                        CPI       _ACCALO, 10h
                        BRCS      SYSTEM._L0067
                        CLR       _ACCA
                        CLR       _ACCB
                        RET
SYSTEM._L0067:
                        LSL       _ACCB
                        ROL       _ACCA
                        DEC       _ACCALO
                        BRNE      SYSTEM._L0067
SYSTEM._L0068:
                        RET

SYSTEM.GetBitCount8:
                        LDI       _ACCCLO, 8
                        LDI       _ACCCHI, 0
SYSTEM._L0069:
                        LSL       _ACCA
                        BRCC      SYSTEM._L0070
                        INC       _ACCCHI
SYSTEM._L0070:
                        DEC       _ACCCLO
                        BRNE      SYSTEM._L0069
                        MOV       _ACCA, _ACCCHI
                        RET

SYSTEM.GetBitCount16:
                        LDI       _ACCCLO, 16
                        LDI       _ACCCHI, 0
SYSTEM._L0071:
                        LSL       _ACCB
                        ROL       _ACCA
                        BRCC      SYSTEM._L0072
                        INC       _ACCCHI
SYSTEM._L0072:
                        DEC       _ACCCLO
                        BRNE      SYSTEM._L0071
                        MOV       _ACCA, _ACCCHI
                        RET

SYSTEM.GetBitCount32:
                        LDI       _ACCCLO, 32
                        LDI       _ACCCHI, 0
SYSTEM._L0073:
                        LSL       _ACCB
                        ROL       _ACCA
                        ROL       _ACCALO
                        ROL       _ACCAHI
                        BRCC      SYSTEM._L0074
                        INC       _ACCCHI
SYSTEM._L0074:
                        DEC       _ACCCLO
                        BRNE      SYSTEM._L0073
                        MOV       _ACCA, _ACCCHI
                        RET

SYSTEM.GetBitCount64:
                        LDI       _ACCCLO, 64
                        LDI       _ACCCHI, 0
SYSTEM._L0075:
                        LSL       _ACCB
                        ROL       _ACCA
                        ROL       _ACCALO
                        ROL       _ACCAHI
                        ROL       _ACCDLO
                        ROL       _ACCDHI
                        ROL       _ACCELO
                        ROL       _ACCEHI
                        BRCC      SYSTEM._L0076
                        INC       _ACCCHI
SYSTEM._L0076:
                        DEC       _ACCCLO
                        BRNE      SYSTEM._L0075
                        MOV       _ACCA, _ACCCHI
                        RET

SYSTEM.DefIntErr:
                        RETI


                        .ROMCONST $

                        ; ============ String-constant tables ============

                        ; ============ array-constant tables ============
                        .SYM      SinusGen.FreqTabelle
SinusGen.FreqTabelle:
                        .WORD     00010h
                        .WORD     00020h
                        .WORD     00040h
                        .WORD     00060h
                        .WORD     00080h
                        .WORD     00100h
                        .WORD     00180h
                        .WORD     00200h
                        .WORD     00300h
                        .WORD     00400h
                        .WORD     00600h
                        .WORD     00800h
                        .WORD     00C00h
                        .WORD     00F00h
                        .WORD     01400h
                        .WORD     01E00h


                        ; ============ Fixed addr String-constant tables ============

                        ; ============ fixed addr array-constant tables ============
                        .ORG      00A00h
                        .CONST    1
SinusGen.SinusWaveHi:
                        .BYTE     000h
                        .BYTE     002h
                        .BYTE     005h
                        .BYTE     008h
                        .BYTE     00Bh
                        .BYTE     00Eh
                        .BYTE     011h
                        .BYTE     014h
                        .BYTE     017h
                        .BYTE     01Ah
                        .BYTE     01Dh
                        .BYTE     01Fh
                        .BYTE     022h
                        .BYTE     025h
                        .BYTE     028h
                        .BYTE     02Ah
                        .BYTE     02Dh
                        .BYTE     02Fh
                        .BYTE     032h
                        .BYTE     034h
                        .BYTE     037h
                        .BYTE     039h
                        .BYTE     03Bh
                        .BYTE     03Dh
                        .BYTE     040h
                        .BYTE     042h
                        .BYTE     044h
                        .BYTE     046h
                        .BYTE     047h
                        .BYTE     049h
                        .BYTE     04Bh
                        .BYTE     04Ch
                        .BYTE     04Eh
                        .BYTE     04Fh
                        .BYTE     051h
                        .BYTE     052h
                        .BYTE     053h
                        .BYTE     054h
                        .BYTE     055h
                        .BYTE     056h
                        .BYTE     057h
                        .BYTE     058h
                        .BYTE     058h
                        .BYTE     059h
                        .BYTE     059h
                        .BYTE     05Ah
                        .BYTE     05Ah
                        .BYTE     05Ah
                        .BYTE     05Ah
                        .BYTE     05Ah
                        .BYTE     05Ah
                        .BYTE     05Ah
                        .BYTE     059h
                        .BYTE     059h
                        .BYTE     058h
                        .BYTE     058h
                        .BYTE     057h
                        .BYTE     056h
                        .BYTE     055h
                        .BYTE     054h
                        .BYTE     053h
                        .BYTE     052h
                        .BYTE     051h
                        .BYTE     04Fh
                        .BYTE     04Eh
                        .BYTE     04Ch
                        .BYTE     04Bh
                        .BYTE     049h
                        .BYTE     047h
                        .BYTE     046h
                        .BYTE     044h
                        .BYTE     042h
                        .BYTE     040h
                        .BYTE     03Dh
                        .BYTE     03Bh
                        .BYTE     039h
                        .BYTE     037h
                        .BYTE     034h
                        .BYTE     032h
                        .BYTE     02Fh
                        .BYTE     02Dh
                        .BYTE     02Ah
                        .BYTE     028h
                        .BYTE     025h
                        .BYTE     022h
                        .BYTE     01Fh
                        .BYTE     01Dh
                        .BYTE     01Ah
                        .BYTE     017h
                        .BYTE     014h
                        .BYTE     011h
                        .BYTE     00Eh
                        .BYTE     00Bh
                        .BYTE     008h
                        .BYTE     005h
                        .BYTE     002h
                        .BYTE     000h
                        .BYTE     0FDh
                        .BYTE     0FAh
                        .BYTE     0F7h
                        .BYTE     0F4h
                        .BYTE     0F1h
                        .BYTE     0EEh
                        .BYTE     0EBh
                        .BYTE     0E8h
                        .BYTE     0E5h
                        .BYTE     0E2h
                        .BYTE     0E0h
                        .BYTE     0DDh
                        .BYTE     0DAh
                        .BYTE     0D7h
                        .BYTE     0D5h
                        .BYTE     0D2h
                        .BYTE     0D0h
                        .BYTE     0CDh
                        .BYTE     0CBh
                        .BYTE     0C8h
                        .BYTE     0C6h
                        .BYTE     0C4h
                        .BYTE     0C2h
                        .BYTE     0BFh
                        .BYTE     0BDh
                        .BYTE     0BBh
                        .BYTE     0B9h
                        .BYTE     0B8h
                        .BYTE     0B6h
                        .BYTE     0B4h
                        .BYTE     0B3h
                        .BYTE     0B1h
                        .BYTE     0B0h
                        .BYTE     0AEh
                        .BYTE     0ADh
                        .BYTE     0ACh
                        .BYTE     0ABh
                        .BYTE     0AAh
                        .BYTE     0A9h
                        .BYTE     0A8h
                        .BYTE     0A7h
                        .BYTE     0A7h
                        .BYTE     0A6h
                        .BYTE     0A6h
                        .BYTE     0A5h
                        .BYTE     0A5h
                        .BYTE     0A5h
                        .BYTE     0A5h
                        .BYTE     0A5h
                        .BYTE     0A5h
                        .BYTE     0A5h
                        .BYTE     0A6h
                        .BYTE     0A6h
                        .BYTE     0A7h
                        .BYTE     0A7h
                        .BYTE     0A8h
                        .BYTE     0A9h
                        .BYTE     0AAh
                        .BYTE     0ABh
                        .BYTE     0ACh
                        .BYTE     0ADh
                        .BYTE     0AEh
                        .BYTE     0B0h
                        .BYTE     0B1h
                        .BYTE     0B3h
                        .BYTE     0B4h
                        .BYTE     0B6h
                        .BYTE     0B8h
                        .BYTE     0B9h
                        .BYTE     0BBh
                        .BYTE     0BDh
                        .BYTE     0BFh
                        .BYTE     0C2h
                        .BYTE     0C4h
                        .BYTE     0C6h
                        .BYTE     0C8h
                        .BYTE     0CBh
                        .BYTE     0CDh
                        .BYTE     0D0h
                        .BYTE     0D2h
                        .BYTE     0D5h
                        .BYTE     0D7h
                        .BYTE     0DAh
                        .BYTE     0DDh
                        .BYTE     0E0h
                        .BYTE     0E2h
                        .BYTE     0E5h
                        .BYTE     0E8h
                        .BYTE     0EBh
                        .BYTE     0EEh
                        .BYTE     0F1h
                        .BYTE     0F4h
                        .BYTE     0F7h
                        .BYTE     0FAh
                        .BYTE     0FDh
                        .BYTE     000h
                        .BYTE     002h
                        .BYTE     005h
                        .BYTE     008h
                        .BYTE     00Bh
                        .BYTE     00Eh
                        .BYTE     011h
                        .BYTE     014h
                        .BYTE     017h
                        .BYTE     01Ah
                        .BYTE     01Dh
                        .BYTE     01Fh
                        .BYTE     022h
                        .BYTE     025h
                        .BYTE     028h
                        .BYTE     02Ah
                        .BYTE     02Dh
                        .BYTE     02Fh
                        .BYTE     032h
                        .BYTE     034h
                        .BYTE     037h
                        .BYTE     039h
                        .BYTE     03Bh
                        .BYTE     03Dh
                        .BYTE     040h
                        .BYTE     042h
                        .BYTE     044h
                        .BYTE     046h
                        .BYTE     047h
                        .BYTE     049h
                        .BYTE     04Bh
                        .BYTE     04Ch
                        .BYTE     04Eh
                        .BYTE     04Fh
                        .BYTE     051h
                        .BYTE     052h
                        .BYTE     053h
                        .BYTE     054h
                        .BYTE     055h
                        .BYTE     056h
                        .BYTE     057h
                        .BYTE     058h
                        .BYTE     058h
                        .BYTE     059h
                        .BYTE     059h
                        .BYTE     05Ah
                        .BYTE     05Ah
                        .BYTE     05Ah
                        .BYTE     05Ah
                        .BYTE     05Ah
                        .BYTE     05Ah
                        .BYTE     05Ah
                        .BYTE     059h
                        .BYTE     059h
                        .BYTE     058h
                        .BYTE     058h
                        .BYTE     057h
                        .BYTE     056h
                        .BYTE     055h
                        .BYTE     054h
                        .BYTE     053h
                        .BYTE     052h
                        .BYTE     051h
                        .BYTE     04Fh

                        .ORG      00B00h
                        .CONST    2
SinusGen.SinusWaveMid:
                        .BYTE     000h
                        .BYTE     0F7h
                        .BYTE     0EDh
                        .BYTE     0E1h
                        .BYTE     0D3h
                        .BYTE     0C2h
                        .BYTE     0ADh
                        .BYTE     093h
                        .BYTE     074h
                        .BYTE     04Eh
                        .BYTE     020h
                        .BYTE     0EBh
                        .BYTE     0ADh
                        .BYTE     065h
                        .BYTE     014h
                        .BYTE     0B7h
                        .BYTE     04Eh
                        .BYTE     0DAh
                        .BYTE     058h
                        .BYTE     0C8h
                        .BYTE     02Ah
                        .BYTE     07Ch
                        .BYTE     0BFh
                        .BYTE     0F1h
                        .BYTE     013h
                        .BYTE     023h
                        .BYTE     021h
                        .BYTE     00Ch
                        .BYTE     0E4h
                        .BYTE     0A8h
                        .BYTE     058h
                        .BYTE     0F3h
                        .BYTE     07Ah
                        .BYTE     0EAh
                        .BYTE     045h
                        .BYTE     08Ah
                        .BYTE     0B8h
                        .BYTE     0CFh
                        .BYTE     0CEh
                        .BYTE     0B7h
                        .BYTE     087h
                        .BYTE     03Fh
                        .BYTE     0E0h
                        .BYTE     068h
                        .BYTE     0D7h
                        .BYTE     02Eh
                        .BYTE     06Ch
                        .BYTE     091h
                        .BYTE     09Dh
                        .BYTE     091h
                        .BYTE     06Ch
                        .BYTE     02Eh
                        .BYTE     0D7h
                        .BYTE     068h
                        .BYTE     0E0h
                        .BYTE     03Fh
                        .BYTE     087h
                        .BYTE     0B7h
                        .BYTE     0CEh
                        .BYTE     0CFh
                        .BYTE     0B8h
                        .BYTE     08Ah
                        .BYTE     045h
                        .BYTE     0EAh
                        .BYTE     07Ah
                        .BYTE     0F3h
                        .BYTE     058h
                        .BYTE     0A8h
                        .BYTE     0E4h
                        .BYTE     00Ch
                        .BYTE     021h
                        .BYTE     023h
                        .BYTE     013h
                        .BYTE     0F1h
                        .BYTE     0BFh
                        .BYTE     07Ch
                        .BYTE     02Ah
                        .BYTE     0C8h
                        .BYTE     058h
                        .BYTE     0DAh
                        .BYTE     04Eh
                        .BYTE     0B7h
                        .BYTE     014h
                        .BYTE     065h
                        .BYTE     0ADh
                        .BYTE     0EBh
                        .BYTE     020h
                        .BYTE     04Eh
                        .BYTE     074h
                        .BYTE     093h
                        .BYTE     0ADh
                        .BYTE     0C2h
                        .BYTE     0D3h
                        .BYTE     0E1h
                        .BYTE     0EDh
                        .BYTE     0F7h
                        .BYTE     000h
                        .BYTE     008h
                        .BYTE     012h
                        .BYTE     01Eh
                        .BYTE     02Ch
                        .BYTE     03Dh
                        .BYTE     052h
                        .BYTE     06Ch
                        .BYTE     08Bh
                        .BYTE     0B1h
                        .BYTE     0DFh
                        .BYTE     014h
                        .BYTE     052h
                        .BYTE     09Ah
                        .BYTE     0EBh
                        .BYTE     048h
                        .BYTE     0B1h
                        .BYTE     025h
                        .BYTE     0A7h
                        .BYTE     037h
                        .BYTE     0D5h
                        .BYTE     083h
                        .BYTE     040h
                        .BYTE     00Eh
                        .BYTE     0ECh
                        .BYTE     0DCh
                        .BYTE     0DEh
                        .BYTE     0F3h
                        .BYTE     01Bh
                        .BYTE     057h
                        .BYTE     0A7h
                        .BYTE     00Ch
                        .BYTE     085h
                        .BYTE     015h
                        .BYTE     0BAh
                        .BYTE     075h
                        .BYTE     047h
                        .BYTE     030h
                        .BYTE     031h
                        .BYTE     048h
                        .BYTE     078h
                        .BYTE     0C0h
                        .BYTE     01Fh
                        .BYTE     097h
                        .BYTE     028h
                        .BYTE     0D1h
                        .BYTE     093h
                        .BYTE     06Eh
                        .BYTE     062h
                        .BYTE     06Eh
                        .BYTE     093h
                        .BYTE     0D1h
                        .BYTE     028h
                        .BYTE     097h
                        .BYTE     01Fh
                        .BYTE     0C0h
                        .BYTE     078h
                        .BYTE     048h
                        .BYTE     031h
                        .BYTE     030h
                        .BYTE     047h
                        .BYTE     075h
                        .BYTE     0BAh
                        .BYTE     015h
                        .BYTE     085h
                        .BYTE     00Ch
                        .BYTE     0A7h
                        .BYTE     057h
                        .BYTE     01Bh
                        .BYTE     0F3h
                        .BYTE     0DEh
                        .BYTE     0DCh
                        .BYTE     0ECh
                        .BYTE     00Eh
                        .BYTE     040h
                        .BYTE     083h
                        .BYTE     0D5h
                        .BYTE     037h
                        .BYTE     0A7h
                        .BYTE     025h
                        .BYTE     0B1h
                        .BYTE     048h
                        .BYTE     0EBh
                        .BYTE     09Ah
                        .BYTE     052h
                        .BYTE     014h
                        .BYTE     0DFh
                        .BYTE     0B1h
                        .BYTE     08Bh
                        .BYTE     06Ch
                        .BYTE     052h
                        .BYTE     03Dh
                        .BYTE     02Ch
                        .BYTE     01Eh
                        .BYTE     012h
                        .BYTE     008h
                        .BYTE     000h
                        .BYTE     0F7h
                        .BYTE     0EDh
                        .BYTE     0E1h
                        .BYTE     0D3h
                        .BYTE     0C2h
                        .BYTE     0ADh
                        .BYTE     093h
                        .BYTE     074h
                        .BYTE     04Eh
                        .BYTE     020h
                        .BYTE     0EBh
                        .BYTE     0ADh
                        .BYTE     065h
                        .BYTE     014h
                        .BYTE     0B7h
                        .BYTE     04Eh
                        .BYTE     0DAh
                        .BYTE     058h
                        .BYTE     0C8h
                        .BYTE     02Ah
                        .BYTE     07Ch
                        .BYTE     0BFh
                        .BYTE     0F1h
                        .BYTE     013h
                        .BYTE     023h
                        .BYTE     021h
                        .BYTE     00Ch
                        .BYTE     0E4h
                        .BYTE     0A8h
                        .BYTE     058h
                        .BYTE     0F3h
                        .BYTE     07Ah
                        .BYTE     0EAh
                        .BYTE     045h
                        .BYTE     08Ah
                        .BYTE     0B8h
                        .BYTE     0CFh
                        .BYTE     0CEh
                        .BYTE     0B7h
                        .BYTE     087h
                        .BYTE     03Fh
                        .BYTE     0E0h
                        .BYTE     068h
                        .BYTE     0D7h
                        .BYTE     02Eh
                        .BYTE     06Ch
                        .BYTE     091h
                        .BYTE     09Dh
                        .BYTE     091h
                        .BYTE     06Ch
                        .BYTE     02Eh
                        .BYTE     0D7h
                        .BYTE     068h
                        .BYTE     0E0h
                        .BYTE     03Fh
                        .BYTE     087h
                        .BYTE     0B7h
                        .BYTE     0CEh
                        .BYTE     0CFh
                        .BYTE     0B8h
                        .BYTE     08Ah
                        .BYTE     045h
                        .BYTE     0EAh

                        .ORG      00C00h
                        .CONST    3
SinusGen.SinusWaveLow:
                        .BYTE     000h
                        .BYTE     004h
                        .BYTE     038h
                        .BYTE     0CCh
                        .BYTE     0F1h
                        .BYTE     0D8h
                        .BYTE     0B3h
                        .BYTE     0B5h
                        .BYTE     013h
                        .BYTE     004h
                        .BYTE     0BEh
                        .BYTE     07Ch
                        .BYTE     07Ah
                        .BYTE     0F7h
                        .BYTE     033h
                        .BYTE     072h
                        .BYTE     0FBh
                        .BYTE     019h
                        .BYTE     019h
                        .BYTE     04Ch
                        .BYTE     007h
                        .BYTE     0A2h
                        .BYTE     07Bh
                        .BYTE     0F3h
                        .BYTE     070h
                        .BYTE     05Ch
                        .BYTE     027h
                        .BYTE     045h
                        .BYTE     02Fh
                        .BYTE     064h
                        .BYTE     067h
                        .BYTE     0C3h
                        .BYTE     007h
                        .BYTE     0C7h
                        .BYTE     09Fh
                        .BYTE     030h
                        .BYTE     020h
                        .BYTE     01Dh
                        .BYTE     0DAh
                        .BYTE     011h
                        .BYTE     083h
                        .BYTE     0F7h
                        .BYTE     039h
                        .BYTE     01Eh
                        .BYTE     081h
                        .BYTE     043h
                        .BYTE     04Ch
                        .BYTE     08Bh
                        .BYTE     0F7h
                        .BYTE     08Bh
                        .BYTE     04Ch
                        .BYTE     043h
                        .BYTE     081h
                        .BYTE     01Eh
                        .BYTE     039h
                        .BYTE     0F7h
                        .BYTE     083h
                        .BYTE     011h
                        .BYTE     0DAh
                        .BYTE     01Dh
                        .BYTE     020h
                        .BYTE     030h
                        .BYTE     09Fh
                        .BYTE     0C7h
                        .BYTE     007h
                        .BYTE     0C3h
                        .BYTE     067h
                        .BYTE     064h
                        .BYTE     02Fh
                        .BYTE     045h
                        .BYTE     027h
                        .BYTE     05Ch
                        .BYTE     070h
                        .BYTE     0F3h
                        .BYTE     07Bh
                        .BYTE     0A2h
                        .BYTE     007h
                        .BYTE     04Ch
                        .BYTE     019h
                        .BYTE     019h
                        .BYTE     0FBh
                        .BYTE     072h
                        .BYTE     033h
                        .BYTE     0F7h
                        .BYTE     07Ah
                        .BYTE     07Ch
                        .BYTE     0BEh
                        .BYTE     004h
                        .BYTE     013h
                        .BYTE     0B5h
                        .BYTE     0B3h
                        .BYTE     0D8h
                        .BYTE     0F1h
                        .BYTE     0CCh
                        .BYTE     038h
                        .BYTE     004h
                        .BYTE     000h
                        .BYTE     0FCh
                        .BYTE     0C8h
                        .BYTE     034h
                        .BYTE     00Fh
                        .BYTE     028h
                        .BYTE     04Dh
                        .BYTE     04Bh
                        .BYTE     0EDh
                        .BYTE     0FCh
                        .BYTE     042h
                        .BYTE     084h
                        .BYTE     086h
                        .BYTE     009h
                        .BYTE     0CDh
                        .BYTE     08Eh
                        .BYTE     005h
                        .BYTE     0E7h
                        .BYTE     0E7h
                        .BYTE     0B4h
                        .BYTE     0F9h
                        .BYTE     05Eh
                        .BYTE     085h
                        .BYTE     00Dh
                        .BYTE     090h
                        .BYTE     0A4h
                        .BYTE     0D9h
                        .BYTE     0BBh
                        .BYTE     0D1h
                        .BYTE     09Ch
                        .BYTE     099h
                        .BYTE     03Dh
                        .BYTE     0F9h
                        .BYTE     039h
                        .BYTE     061h
                        .BYTE     0D0h
                        .BYTE     0E0h
                        .BYTE     0E3h
                        .BYTE     026h
                        .BYTE     0EFh
                        .BYTE     07Dh
                        .BYTE     009h
                        .BYTE     0C7h
                        .BYTE     0E2h
                        .BYTE     07Fh
                        .BYTE     0BDh
                        .BYTE     0B4h
                        .BYTE     075h
                        .BYTE     009h
                        .BYTE     075h
                        .BYTE     0B4h
                        .BYTE     0BDh
                        .BYTE     07Fh
                        .BYTE     0E2h
                        .BYTE     0C7h
                        .BYTE     009h
                        .BYTE     07Dh
                        .BYTE     0EFh
                        .BYTE     026h
                        .BYTE     0E3h
                        .BYTE     0E0h
                        .BYTE     0D0h
                        .BYTE     061h
                        .BYTE     039h
                        .BYTE     0F9h
                        .BYTE     03Dh
                        .BYTE     099h
                        .BYTE     09Ch
                        .BYTE     0D1h
                        .BYTE     0BBh
                        .BYTE     0D9h
                        .BYTE     0A4h
                        .BYTE     090h
                        .BYTE     00Dh
                        .BYTE     085h
                        .BYTE     05Eh
                        .BYTE     0F9h
                        .BYTE     0B4h
                        .BYTE     0E7h
                        .BYTE     0E7h
                        .BYTE     005h
                        .BYTE     08Eh
                        .BYTE     0CDh
                        .BYTE     009h
                        .BYTE     086h
                        .BYTE     084h
                        .BYTE     042h
                        .BYTE     0FCh
                        .BYTE     0EDh
                        .BYTE     04Bh
                        .BYTE     04Dh
                        .BYTE     028h
                        .BYTE     00Fh
                        .BYTE     034h
                        .BYTE     0C8h
                        .BYTE     0FCh
                        .BYTE     000h
                        .BYTE     004h
                        .BYTE     038h
                        .BYTE     0CCh
                        .BYTE     0F1h
                        .BYTE     0D8h
                        .BYTE     0B3h
                        .BYTE     0B5h
                        .BYTE     013h
                        .BYTE     004h
                        .BYTE     0BEh
                        .BYTE     07Ch
                        .BYTE     07Ah
                        .BYTE     0F7h
                        .BYTE     033h
                        .BYTE     072h
                        .BYTE     0FBh
                        .BYTE     019h
                        .BYTE     019h
                        .BYTE     04Ch
                        .BYTE     007h
                        .BYTE     0A2h
                        .BYTE     07Bh
                        .BYTE     0F3h
                        .BYTE     070h
                        .BYTE     05Ch
                        .BYTE     027h
                        .BYTE     045h
                        .BYTE     02Fh
                        .BYTE     064h
                        .BYTE     067h
                        .BYTE     0C3h
                        .BYTE     007h
                        .BYTE     0C7h
                        .BYTE     09Fh
                        .BYTE     030h
                        .BYTE     020h
                        .BYTE     01Dh
                        .BYTE     0DAh
                        .BYTE     011h
                        .BYTE     083h
                        .BYTE     0F7h
                        .BYTE     039h
                        .BYTE     01Eh
                        .BYTE     081h
                        .BYTE     043h
                        .BYTE     04Ch
                        .BYTE     08Bh
                        .BYTE     0F7h
                        .BYTE     08Bh
                        .BYTE     04Ch
                        .BYTE     043h
                        .BYTE     081h
                        .BYTE     01Eh
                        .BYTE     039h
                        .BYTE     0F7h
                        .BYTE     083h
                        .BYTE     011h
                        .BYTE     0DAh
                        .BYTE     01Dh
                        .BYTE     020h
                        .BYTE     030h
                        .BYTE     09Fh
                        .BYTE     0C7h


                        ; ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
                        ; Reset and Interrupt vectors
                        ; ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++


                        .ENDCODE
SYSTEM.ENDCODE:
                        .ORG       0, VECTTAB
                        .VECTTAB
SYSTEM.VectTab:
                        RJMP      SYSTEM.RESET
                        RJMP      SYSTEM.DefIntErr
                        RJMP      SYSTEM.DefIntErr
                        RJMP      SYSTEM.DefIntErr
                        RJMP      SYSTEM.DefIntErr
                        RJMP      SYSTEM.DefIntErr
                        RJMP      SYSTEM.DefIntErr
                        RJMP      SYSTEM.DefIntErr
                        RJMP      SYSTEM.DefIntErr
                        RJMP      SYSTEM.$INTERRUPT_TIMER2
                        RJMP      SYSTEM.DefIntErr
                        RJMP      SYSTEM.DefIntErr
                        RJMP      SYSTEM.DefIntErr
                        RJMP      SYSTEM.DefIntErr
                        RJMP      SYSTEM.DefIntErr
                        RJMP      SYSTEM.DefIntErr
                        RJMP      SYSTEM.DefIntErr
                        RJMP      SYSTEM.DefIntErr
                        RJMP      SYSTEM.DefIntErr
                        RJMP      SYSTEM.DefIntErr
                        RJMP      SYSTEM.DefIntErr
                        RJMP      SYSTEM.DefIntErr
                        RJMP      SYSTEM.DefIntErr
                        RJMP      SYSTEM.DefIntErr
                        RJMP      SYSTEM.DefIntErr
                        RJMP      SYSTEM.DefIntErr

                        .VECTTABE
SYSTEM.ENDPROG:

                        .END

                        ; ============ End of Program ============


                        ; System uses registers
                        ; from bottom     = 00000h
                        ; upto            = 00006h
                        ; and
                        ; from            = 00010h
                        ; upto            = 0001Fh
                        ;
                        ; Stackframe at   = ...0011Ch


                        ; ===== Current top of User Vars in Data is 0000Bh =====

                        ; ===== Current top of User Vars in IData is 0013Dh =====

                        ; ===== EEprom currently not used =====


                        ; ===== Imported Library Routines =====

                        ; Shift  left  word SHL16

                        ; Pascal Statements : 212
                        ; Assembler Lines   : 5454
                        ; Optimizer removed : 30 lines = 60Bytes

                        ; >> real SysTick (exact): 10.000 msec <<

;  Linker removed the following functions and procedures
;
;  Module/Unit             Function/Procedure
;  ------------------------------------------
;
