**********
* Program ONE_TONE (6811)
*
* Generates 1000 Hz square wave on output PA6.  Illustrates the use of
* Output Capture.  (PA6 corresponds to OC2).
*
* Time count is fetched and 1000 ticks added corresponding to 500 usecs.
*
*
* Peter H. Anderson, MSU, 5 Feb 90; Checked 6 Feb 90; Redone 5 Nov 90
*	18 Jan 93
**********

PSCT            EQU $C000
DSCT            EQU $D000
IDSCT		EQU $D300

STACKTP         EQU $0045

OC2_VECTOR      EQU $00DC       

REG_BASE        EQU $1000       * indexed addressing of page $10

TCNT            EQU $0E         * free running 16-bit counter
TOC2            EQU $18         * 16-bit compare pattern
TMSK1           EQU $22         * int mask, OC2 corresponds to bit 6
TFLG1           EQU $23         * logic 1 on bit 6 when OC2
TCTL1           EQU $20         * config of connection to Port A


        ORG PSCT

        SEI
        LDS #STACKTP
        LDY #REG_BASE

        BSET TMSK1,Y %01000000  * set mask for OC_2

        BCLR TCTL1,Y %10000000  * on interrupt, toggle PA6
        BSET TCTL1,Y %01000000

        LDD TCNT,Y              * get the time counter
        ADDD #500*2             * add 1000 ticks
        STD TOC2,Y              * save in TOC

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 TOC

        RTI

        ORG OC2_VECTOR

        JMP OC2_INTSERV

