//m6811v.h
//the vektors of the 6811 in a structure
//19940726/wjvg

typedef _interrupt (*VECTOR)();

//interrupt-vectors
struct svector {
  VECTOR v_sci;    //serial communication interface
  VECTOR v_spi;    //serial peripheral    interface
  VECTOR v_paie;   //pulse accum input edge
  VECTOR v_pao;    //pulse accum overflow
  VECTOR v_tof;    //timer overflow
  VECTOR v_toc5;   //timer IC4/OC5
  VECTOR v_toc4;   //timer output compare 4
  VECTOR v_toc3;   //timer output compare 3
  VECTOR v_toc2;   //timer output compare 2
  VECTOR v_toc1;   //timer output compare 1
  VECTOR v_tic3;   //timer input  capture 3
  VECTOR v_tic2;   //timer input  capture 2
  VECTOR v_tic1;   //timer input  capture 1
  VECTOR v_rti;    //real time interrupt
  VECTOR v_irq;    //IRQ  - external pin
  VECTOR v_xirq;   //XIRQ - external pin, pseudo-nonmaskable
  VECTOR v_swi;    //software interrupt
  VECTOR v_illop;  //illegal opcode trap
  VECTOR v_cop;    //COP failure (reset)
  VECTOR v_clm;    //clock monitor fail (reset)
  VECTOR v_rst;    //reset
};

#if INCLUDE_VECTORS  //add vectors?

_interrupt int_sci  ();  //serial communication interface
_interrupt int_spi  ();  //serial peripheral    interface
_interrupt int_paie ();  //pulse accum input edge
_interrupt int_pao  ();  //pulse accum overflow
_interrupt int_tof  ();  //timer overflow
_interrupt int_toc5 ();  //timer IC4/OC5
_interrupt int_toc4 ();  //timer output compare 4
_interrupt int_toc3 ();  //timer output compare 3
_interrupt int_toc2 ();  //timer output compare 2
_interrupt int_toc1 ();  //timer output compare 1
_interrupt int_tic3 ();  //timer input  capture 3
_interrupt int_tic2 ();  //timer input  capture 2
_interrupt int_tic1 ();  //timer input  capture 1
_interrupt int_rti  ();  //real time interrupt
_interrupt int_irq  ();  //IRQ  - external pin
_interrupt int_xirq ();  //XIRQ - external pin, pseudo-nonmaskable
_interrupt int_swi  ();  //software interrupt
_interrupt int_illop();  //illegal opcode trap
_interrupt int_cop  ();  //COP failure (reset)
_interrupt int_clm  ();  //clock monitor fail (reset)
_interrupt int_rst  ();  //reset

#asm
 vector  //put in this space
 rpt 0   //skip next data-statement
#endasm

//this structure is normally on 0xffd6 and further
struct svector Svectors={
  int_sci,    //serial communication interface
  int_spi,    //serial peripheral    interface
  int_paie,   //pulse accum input edge
  int_pao,    //pulse accum overflow
  int_tof,    //timer overflow
  int_toc5,   //timer IC4/OC5
  int_toc4,   //timer output compare 4
  int_toc3,   //timer output compare 3
  int_toc2,   //timer output compare 2
  int_toc1,   //timer output compare 1
  int_tic3,   //timer input  capture 3
  int_tic2,   //timer input  capture 2
  int_tic1,   //timer input  capture 1
  int_rti,    //real time interrupt
  int_irq,    //IRQ  - external pin
  int_xirq,   //XIRQ - external pin, pseudo-nonmaskable
  int_swi,    //software interrupt
  int_illop,  //illegal opcode trap
  int_cop,    //COP failure (reset)
  int_clm,    //clock monitor fail (reset)
  int_rst     //reset
};

#asm
 code
#endasm

#endif

//end
