**********
* Program TWO_TONE (6811)
*
* Generates 1000 Hz square wave on output PA6 (OC2) and 440 Hz on PA5 (OC3).
* Illustrates the use of two simultaneous output captures.
*
*
* Peter H. Anderson, MSU, 5 Nov 90; 18 Jan 93
**********

PSCT            EQU $C000
DSCT            EQU $D000
IDSCT		EQU $D300

STACKTP         EQU $0045

OC2_VECTOR      EQU $00DC
OC3_VECTOR      EQU $00D9

REG_BASE        EQU $1000       * indexed addressing of page $10

TCNT            EQU $0E         * free running 16-bit counter
TOC2            EQU $18         * 16-bit compare pattern
TOC3            EQU $1A
TMSK1           EQU $22
* int mask, OC2, OC3 corresponds to bit 6 and 5
TFLG1           EQU $23
* logic 1 on bit 6 when OC2, bit 5 when OC3
TCTL1           EQU $20         * config of connection to Port A


        ORG PSCT

        SEI
        LDS #STACKTP
        LDY #REG_BASE

        BSET TMSK1,Y %01100000  * set mask for OC_2 and OC_3

        BCLR TCTL1,Y %10100000  * on interrupt, toggle PA6 and PA5
        BSET TCTL1,Y %01010000

* the following 6 statements are not really required
        LDD TCNT,Y              * get the time counter
        ADDD #500*2             * 500 usecs
        STD TOC2,Y              * save in TOC
        LDD TCNT,Y
        ADDD #1136*2            * 1136 usecs
        STD TOC3,Y

L1
        CLI
        WAI
        BRA L1


OC2_INTSERV

        BCLR TFLG1,Y %10111111  * clear the interrupt flag

        LDD TOC2,Y              * get the current TOC2
* there is an advantage to doing this rather than fetching TCNT
        ADDD #500*2             * add 500 usecs
        STD TOC2,Y              * save in TOC2

        RTI

OC3_INTSERV

        BCLR TFLG1,Y %11011111  * clear the interrupt flag

        LDD TOC3,Y              * get the current TOC3
        ADDD #1136*2            * add 1136 usecs
        STD TOC3,Y              * save in TOC3

        RTI

        ORG OC2_VECTOR

        JMP OC2_INTSERV

        ORG OC3_VECTOR

        JMP OC3_INTSERV

