瀏覽代碼

Remove nonexistent controller.

ccrause 1 周之前
父節點
當前提交
d67f878722
共有 4 個文件被更改,包括 2 次插入1612 次删除
  1. 0 2
      compiler/avr/cpuinfo.pas
  2. 1 1
      rtl/embedded/Makefile
  3. 1 1
      rtl/embedded/Makefile.fpc
  4. 0 1608
      rtl/embedded/avr/attiny3214.pp

+ 0 - 2
compiler/avr/cpuinfo.pas

@@ -275,7 +275,6 @@ Type
       ct_attiny1634,
       ct_attiny1634,
       ct_attiny2313,
       ct_attiny2313,
       ct_attiny2313a,
       ct_attiny2313a,
-      ct_attiny3214,
       ct_attiny3216,
       ct_attiny3216,
       ct_attiny3217,
       ct_attiny3217,
       ct_attiny3224,
       ct_attiny3224,
@@ -721,7 +720,6 @@ Const
         ,(controllertypestr:'ATTINY1634';controllerunitstr:'ATTINY1634';cputype:cpu_avr35;fputype:fpu_soft;flashbase:0;flashsize:16384;srambase:256;sramsize:1024;eeprombase:0;eepromsize:256)
         ,(controllertypestr:'ATTINY1634';controllerunitstr:'ATTINY1634';cputype:cpu_avr35;fputype:fpu_soft;flashbase:0;flashsize:16384;srambase:256;sramsize:1024;eeprombase:0;eepromsize:256)
         ,(controllertypestr:'ATTINY2313';controllerunitstr:'ATTINY2313';cputype:cpu_avr25;fputype:fpu_soft;flashbase:0;flashsize:2048;srambase:96;sramsize:128;eeprombase:0;eepromsize:128)
         ,(controllertypestr:'ATTINY2313';controllerunitstr:'ATTINY2313';cputype:cpu_avr25;fputype:fpu_soft;flashbase:0;flashsize:2048;srambase:96;sramsize:128;eeprombase:0;eepromsize:128)
         ,(controllertypestr:'ATTINY2313A';controllerunitstr:'ATTINY2313A';cputype:cpu_avr25;fputype:fpu_soft;flashbase:0;flashsize:2048;srambase:96;sramsize:128;eeprombase:0;eepromsize:128)
         ,(controllertypestr:'ATTINY2313A';controllerunitstr:'ATTINY2313A';cputype:cpu_avr25;fputype:fpu_soft;flashbase:0;flashsize:2048;srambase:96;sramsize:128;eeprombase:0;eepromsize:128)
-        ,(controllertypestr:'ATTINY3214';controllerunitstr:'ATTINY3214';cputype:cpu_avrxmega3;fputype:fpu_soft;flashbase:0;flashsize:32768;srambase:14336;sramsize:2048;eeprombase:5120;eepromsize:256)
         ,(controllertypestr:'ATTINY3216';controllerunitstr:'ATTINY3216';cputype:cpu_avrxmega3;fputype:fpu_soft;flashbase:0;flashsize:32768;srambase:14336;sramsize:2048;eeprombase:5120;eepromsize:256)
         ,(controllertypestr:'ATTINY3216';controllerunitstr:'ATTINY3216';cputype:cpu_avrxmega3;fputype:fpu_soft;flashbase:0;flashsize:32768;srambase:14336;sramsize:2048;eeprombase:5120;eepromsize:256)
         ,(controllertypestr:'ATTINY3217';controllerunitstr:'ATTINY3217';cputype:cpu_avrxmega3;fputype:fpu_soft;flashbase:0;flashsize:32768;srambase:14336;sramsize:2048;eeprombase:5120;eepromsize:256)
         ,(controllertypestr:'ATTINY3217';controllerunitstr:'ATTINY3217';cputype:cpu_avrxmega3;fputype:fpu_soft;flashbase:0;flashsize:32768;srambase:14336;sramsize:2048;eeprombase:5120;eepromsize:256)
         ,(controllertypestr:'ATTINY3224';controllerunitstr:'ATTINY3224';cputype:cpu_avrxmega3;fputype:fpu_soft;flashbase:0;flashsize:32768;srambase:13312;sramsize:3072;eeprombase:5120;eepromsize:256)
         ,(controllertypestr:'ATTINY3224';controllerunitstr:'ATTINY3224';cputype:cpu_avrxmega3;fputype:fpu_soft;flashbase:0;flashsize:32768;srambase:13312;sramsize:3072;eeprombase:5120;eepromsize:256)

+ 1 - 1
rtl/embedded/Makefile

@@ -1042,7 +1042,7 @@ CPU_UNITS=atmega808 atmega809 atmega1608 atmega1609 atmega3208 atmega3209 atmega
           attiny406 attiny412 attiny414 attiny416  attiny416auto attiny417 attiny424 \
           attiny406 attiny412 attiny414 attiny416  attiny416auto attiny417 attiny424 \
           attiny426 attiny427 attiny804 attiny806 attiny807 attiny814 attiny816 \
           attiny426 attiny427 attiny804 attiny806 attiny807 attiny814 attiny816 \
           attiny817 attiny824 attiny826 attiny827 attiny1604 attiny1606 attiny1607 \
           attiny817 attiny824 attiny826 attiny827 attiny1604 attiny1606 attiny1607 \
-          attiny1614 attiny1616 attiny1617 attiny1624 attiny1626 attiny1627 attiny3214 \
+          attiny1614 attiny1616 attiny1617 attiny1624 attiny1626 attiny1627 \
           attiny3216 attiny3217 attiny3224 attiny3226 attiny3227 avr16dd14 avr16dd20 \
           attiny3216 attiny3217 attiny3224 attiny3226 attiny3227 avr16dd14 avr16dd20 \
           avr16dd28 avr16dd32 avr16du14 avr16du20 avr16du28 avr16du32 avr16ea28 \
           avr16dd28 avr16dd32 avr16du14 avr16du20 avr16du28 avr16du32 avr16ea28 \
           avr16ea32 avr16ea48 avr16eb14 avr16eb20 avr16eb28 avr16eb32 avr32da28 \
           avr16ea32 avr16ea48 avr16eb14 avr16eb20 avr16eb28 avr16eb32 avr32da28 \

+ 1 - 1
rtl/embedded/Makefile.fpc

@@ -178,7 +178,7 @@ CPU_UNITS=atmega808 atmega809 atmega1608 atmega1609 atmega3208 atmega3209 atmega
           attiny406 attiny412 attiny414 attiny416  attiny416auto attiny417 attiny424 \
           attiny406 attiny412 attiny414 attiny416  attiny416auto attiny417 attiny424 \
           attiny426 attiny427 attiny804 attiny806 attiny807 attiny814 attiny816 \
           attiny426 attiny427 attiny804 attiny806 attiny807 attiny814 attiny816 \
           attiny817 attiny824 attiny826 attiny827 attiny1604 attiny1606 attiny1607 \
           attiny817 attiny824 attiny826 attiny827 attiny1604 attiny1606 attiny1607 \
-          attiny1614 attiny1616 attiny1617 attiny1624 attiny1626 attiny1627 attiny3214 \
+          attiny1614 attiny1616 attiny1617 attiny1624 attiny1626 attiny1627 \
           attiny3216 attiny3217 attiny3224 attiny3226 attiny3227 avr16dd14 avr16dd20 \
           attiny3216 attiny3217 attiny3224 attiny3226 attiny3227 avr16dd14 avr16dd20 \
           avr16dd28 avr16dd32 avr16du14 avr16du20 avr16du28 avr16du32 avr16ea28 \
           avr16dd28 avr16dd32 avr16du14 avr16du20 avr16du28 avr16du32 avr16ea28 \
           avr16ea32 avr16ea48 avr16eb14 avr16eb20 avr16eb28 avr16eb32 avr32da28 \
           avr16ea32 avr16ea48 avr16eb14 avr16eb20 avr16eb28 avr16eb32 avr32da28 \

+ 0 - 1608
rtl/embedded/avr/attiny3214.pp

@@ -1,1608 +0,0 @@
-unit ATtiny3214;
-
-interface
-
-type
-  TAC = object //Analog Comparator
-    CTRLA: byte;  //Control A
-    Reserved1: byte;
-    MUXCTRLA: byte;  //Mux Control A
-    Reserved3: byte;
-    Reserved4: byte;
-    Reserved5: byte;
-    INTCTRL: byte;  //Interrupt Control
-    STATUS: byte;  //Status
-  const
-    ENABLEidx = $00;  ENABLEbm = $01;  // Enable
-    HYSMODE0idx = $01;  // Hysteresis Mode
-    HYSMODE1idx = $02;  // Hysteresis Mode
-    INTMODE0idx = $04;  // Interrupt Mode
-    INTMODE1idx = $05;  // Interrupt Mode
-    LPMODEidx = $03;  LPMODEbm = $08;  // Low Power Mode
-    OUTENidx = $06;  OUTENbm = $40;  // Output Buffer Enable
-    RUNSTDBYidx = $07;  RUNSTDBYbm = $80;  // Run in Standby Mode
-    CMPidx = $00;  CMPbm = $01;  // Analog Comparator 0 Interrupt Enable
-    INVERTidx = $07;  INVERTbm = $80;  // Invert AC Output
-    MUXNEG0idx = $00;  // Negative Input MUX Selection
-    MUXNEG1idx = $01;  // Negative Input MUX Selection
-    MUXPOS0idx = $03;  // Positive Input MUX Selection
-    MUXPOS1idx = $04;  // Positive Input MUX Selection
-    STATEidx = $04;  STATEbm = $10;  // Analog Comparator State
-  end;
-
-  TADC = object //Analog to Digital Converter
-    CTRLA: byte;  //Control A
-    CTRLB: byte;  //Control B
-    CTRLC: byte;  //Control C
-    CTRLD: byte;  //Control D
-    CTRLE: byte;  //Control E
-    SAMPCTRL: byte;  //Sample Control
-    MUXPOS: byte;  //Positive mux input
-    Reserved7: byte;
-    COMMAND: byte;  //Command
-    EVCTRL: byte;  //Event Control
-    INTCTRL: byte;  //Interrupt Control
-    INTFLAGS: byte;  //Interrupt Flags
-    DBGCTRL: byte;  //Debug Control
-    TEMP: byte;  //Temporary Data
-    Reserved14: byte;
-    Reserved15: byte;
-    RES: word;  //ADC Accumulator Result
-    WINLT: word;  //Window comparator low threshold
-    WINHT: word;  //Window comparator high threshold
-    CALIB: byte;  //Calibration
-  const
-    DUTYCYCidx = $00;  DUTYCYCbm = $01;  // Duty Cycle
-    STCONVidx = $00;  STCONVbm = $01;  // Start Conversion Operation
-    ENABLEidx = $00;  ENABLEbm = $01;  // ADC Enable
-    FREERUNidx = $01;  FREERUNbm = $02;  // ADC Freerun mode
-    RESSELidx = $02;  RESSELbm = $04;  // ADC Resolution
-    RUNSTBYidx = $07;  RUNSTBYbm = $80;  // Run standby mode
-    SAMPNUM0idx = $00;  // Accumulation Samples
-    SAMPNUM1idx = $01;  // Accumulation Samples
-    SAMPNUM2idx = $02;  // Accumulation Samples
-    PRESC0idx = $00;  // Clock Pre-scaler
-    PRESC1idx = $01;  // Clock Pre-scaler
-    PRESC2idx = $02;  // Clock Pre-scaler
-    REFSEL0idx = $04;  // Reference Selection
-    REFSEL1idx = $05;  // Reference Selection
-    SAMPCAPidx = $06;  SAMPCAPbm = $40;  // Sample Capacitance Selection
-    ASDVidx = $04;  ASDVbm = $10;  // Automatic Sampling Delay Variation
-    INITDLY0idx = $05;  // Initial Delay Selection
-    INITDLY1idx = $06;  // Initial Delay Selection
-    INITDLY2idx = $07;  // Initial Delay Selection
-    SAMPDLY0idx = $00;  // Sampling Delay Selection
-    SAMPDLY1idx = $01;  // Sampling Delay Selection
-    SAMPDLY2idx = $02;  // Sampling Delay Selection
-    SAMPDLY3idx = $03;  // Sampling Delay Selection
-    WINCM0idx = $00;  // Window Comparator Mode
-    WINCM1idx = $01;  // Window Comparator Mode
-    WINCM2idx = $02;  // Window Comparator Mode
-    DBGRUNidx = $00;  DBGRUNbm = $01;  // Debug run
-    STARTEIidx = $00;  STARTEIbm = $01;  // Start Event Input Enable
-    RESRDYidx = $00;  RESRDYbm = $01;  // Result Ready Interrupt Enable
-    WCMPidx = $01;  WCMPbm = $02;  // Window Comparator Interrupt Enable
-    MUXPOS0idx = $00;  // Analog Channel Selection Bits
-    MUXPOS1idx = $01;  // Analog Channel Selection Bits
-    MUXPOS2idx = $02;  // Analog Channel Selection Bits
-    MUXPOS3idx = $03;  // Analog Channel Selection Bits
-    MUXPOS4idx = $04;  // Analog Channel Selection Bits
-    SAMPLEN0idx = $00;  // Sample lenght
-    SAMPLEN1idx = $01;  // Sample lenght
-    SAMPLEN2idx = $02;  // Sample lenght
-    SAMPLEN3idx = $03;  // Sample lenght
-    SAMPLEN4idx = $04;  // Sample lenght
-    TEMP0idx = $00;  // Temporary
-    TEMP1idx = $01;  // Temporary
-    TEMP2idx = $02;  // Temporary
-    TEMP3idx = $03;  // Temporary
-    TEMP4idx = $04;  // Temporary
-    TEMP5idx = $05;  // Temporary
-    TEMP6idx = $06;  // Temporary
-    TEMP7idx = $07;  // Temporary
-  end;
-
-  TBOD = object //Bod interface
-    CTRLA: byte;  //Control A
-    CTRLB: byte;  //Control B
-    Reserved2: byte;
-    Reserved3: byte;
-    Reserved4: byte;
-    Reserved5: byte;
-    Reserved6: byte;
-    Reserved7: byte;
-    VLMCTRLA: byte;  //Voltage level monitor Control
-    INTCTRL: byte;  //Voltage level monitor interrupt Control
-    INTFLAGS: byte;  //Voltage level monitor interrupt Flags
-    STATUS: byte;  //Voltage level monitor status
-  const
-    ACTIVE0idx = $02;  // Operation in active mode
-    ACTIVE1idx = $03;  // Operation in active mode
-    SAMPFREQidx = $04;  SAMPFREQbm = $10;  // Sample frequency
-    SLEEP0idx = $00;  // Operation in sleep mode
-    SLEEP1idx = $01;  // Operation in sleep mode
-    LVL0idx = $00;  // Bod level
-    LVL1idx = $01;  // Bod level
-    LVL2idx = $02;  // Bod level
-    VLMCFG0idx = $01;  // Configuration
-    VLMCFG1idx = $02;  // Configuration
-    VLMIEidx = $00;  VLMIEbm = $01;  // voltage level monitor interrrupt enable
-    VLMIFidx = $00;  VLMIFbm = $01;  // Voltage level monitor interrupt flag
-    VLMSidx = $00;  VLMSbm = $01;  // Voltage level monitor status
-    VLMLVL0idx = $00;  // voltage level monitor level
-    VLMLVL1idx = $01;  // voltage level monitor level
-  end;
-
-  TCCL = object //Configurable Custom Logic
-    CTRLA: byte;  //Control Register A
-    SEQCTRL0: byte;  //Sequential Control 0
-    Reserved2: byte;
-    Reserved3: byte;
-    Reserved4: byte;
-    LUT0CTRLA: byte;  //LUT Control 0 A
-    LUT0CTRLB: byte;  //LUT Control 0 B
-    LUT0CTRLC: byte;  //LUT Control 0 C
-    TRUTH0: byte;  //Truth 0
-    LUT1CTRLA: byte;  //LUT Control 1 A
-    LUT1CTRLB: byte;  //LUT Control 1 B
-    LUT1CTRLC: byte;  //LUT Control 1 C
-    TRUTH1: byte;  //Truth 1
-  const
-    ENABLEidx = $00;  ENABLEbm = $01;  // Enable
-    RUNSTDBYidx = $06;  RUNSTDBYbm = $40;  // Run in Standby
-    CLKSRCidx = $06;  CLKSRCbm = $40;  // Clock Source Selection
-    EDGEDETidx = $07;  EDGEDETbm = $80;  // Edge Detection Enable
-    FILTSEL0idx = $04;  // Filter Selection
-    FILTSEL1idx = $05;  // Filter Selection
-    OUTENidx = $03;  OUTENbm = $08;  // Output Enable
-    INSEL00idx = $00;  // LUT Input 0 Source Selection
-    INSEL01idx = $01;  // LUT Input 0 Source Selection
-    INSEL02idx = $02;  // LUT Input 0 Source Selection
-    INSEL03idx = $03;  // LUT Input 0 Source Selection
-    INSEL10idx = $04;  // LUT Input 1 Source Selection
-    INSEL11idx = $05;  // LUT Input 1 Source Selection
-    INSEL12idx = $06;  // LUT Input 1 Source Selection
-    INSEL13idx = $07;  // LUT Input 1 Source Selection
-    INSEL20idx = $00;  // LUT Input 2 Source Selection
-    INSEL21idx = $01;  // LUT Input 2 Source Selection
-    INSEL22idx = $02;  // LUT Input 2 Source Selection
-    INSEL23idx = $03;  // LUT Input 2 Source Selection
-    SEQSEL0idx = $00;  // Sequential Selection
-    SEQSEL1idx = $01;  // Sequential Selection
-    SEQSEL2idx = $02;  // Sequential Selection
-  end;
-
-  TCLKCTRL = object //Clock controller
-    MCLKCTRLA: byte;  //MCLK Control A
-    MCLKCTRLB: byte;  //MCLK Control B
-    MCLKLOCK: byte;  //MCLK Lock
-    MCLKSTATUS: byte;  //MCLK Status
-    Reserved4: byte;
-    Reserved5: byte;
-    Reserved6: byte;
-    Reserved7: byte;
-    Reserved8: byte;
-    Reserved9: byte;
-    Reserved10: byte;
-    Reserved11: byte;
-    Reserved12: byte;
-    Reserved13: byte;
-    Reserved14: byte;
-    Reserved15: byte;
-    OSC20MCTRLA: byte;  //OSC20M Control A
-    OSC20MCALIBA: byte;  //OSC20M Calibration A
-    OSC20MCALIBB: byte;  //OSC20M Calibration B
-    Reserved19: byte;
-    Reserved20: byte;
-    Reserved21: byte;
-    Reserved22: byte;
-    Reserved23: byte;
-    OSC32KCTRLA: byte;  //OSC32K Control A
-    Reserved25: byte;
-    Reserved26: byte;
-    Reserved27: byte;
-    XOSC32KCTRLA: byte;  //XOSC32K Control A
-  const
-    CLKOUTidx = $07;  CLKOUTbm = $80;  // System clock out
-    CLKSEL0idx = $00;  // clock select
-    CLKSEL1idx = $01;  // clock select
-    PDIV0idx = $01;  // Prescaler division
-    PDIV1idx = $02;  // Prescaler division
-    PDIV2idx = $03;  // Prescaler division
-    PDIV3idx = $04;  // Prescaler division
-    PENidx = $00;  PENbm = $01;  // Prescaler enable
-    LOCKENidx = $00;  LOCKENbm = $01;  // lock ebable
-    EXTSidx = $07;  EXTSbm = $80;  // External Clock status
-    OSC20MSidx = $04;  OSC20MSbm = $10;  // 20MHz oscillator status
-    OSC32KSidx = $05;  OSC32KSbm = $20;  // 32KHz oscillator status
-    SOSCidx = $00;  SOSCbm = $01;  // System Oscillator changing
-    XOSC32KSidx = $06;  XOSC32KSbm = $40;  // 32.768 kHz Crystal Oscillator status
-    CAL20M0idx = $00;  // Calibration
-    CAL20M1idx = $01;  // Calibration
-    CAL20M2idx = $02;  // Calibration
-    CAL20M3idx = $03;  // Calibration
-    CAL20M4idx = $04;  // Calibration
-    CAL20M5idx = $05;  // Calibration
-    LOCKidx = $07;  LOCKbm = $80;  // Lock
-    TEMPCAL20M0idx = $00;  // Oscillator temperature coefficient
-    TEMPCAL20M1idx = $01;  // Oscillator temperature coefficient
-    TEMPCAL20M2idx = $02;  // Oscillator temperature coefficient
-    TEMPCAL20M3idx = $03;  // Oscillator temperature coefficient
-    RUNSTDBYidx = $01;  RUNSTDBYbm = $02;  // Run standby
-    CSUT0idx = $04;  // Crystal startup time
-    CSUT1idx = $05;  // Crystal startup time
-    ENABLEidx = $00;  ENABLEbm = $01;  // Enable
-    SELidx = $02;  SELbm = $04;  // Select
-  end;
-
-  TCPU = object //CPU
-    Reserved0: byte;
-    Reserved1: byte;
-    Reserved2: byte;
-    Reserved3: byte;
-    CCP: byte;  //Configuration Change Protection
-    Reserved5: byte;
-    Reserved6: byte;
-    Reserved7: byte;
-    Reserved8: byte;
-    Reserved9: byte;
-    Reserved10: byte;
-    Reserved11: byte;
-    Reserved12: byte;
-    SPL: byte;  //Stack Pointer Low
-    SPH: byte;  //Stack Pointer High
-    SREG: byte;  //Status Register
-  const
-    CCP0idx = $00;  // CCP signature
-    CCP1idx = $01;  // CCP signature
-    CCP2idx = $02;  // CCP signature
-    CCP3idx = $03;  // CCP signature
-    CCP4idx = $04;  // CCP signature
-    CCP5idx = $05;  // CCP signature
-    CCP6idx = $06;  // CCP signature
-    CCP7idx = $07;  // CCP signature
-    Cidx = $00;  Cbm = $01;  // Carry Flag
-    Hidx = $05;  Hbm = $20;  // Half Carry Flag
-    Iidx = $07;  Ibm = $80;  // Global Interrupt Enable Flag
-    Nidx = $02;  Nbm = $04;  // Negative Flag
-    Sidx = $04;  Sbm = $10;  // N Exclusive Or V Flag
-    Tidx = $06;  Tbm = $40;  // Transfer Bit
-    Vidx = $03;  Vbm = $08;  // Two's Complement Overflow Flag
-    Zidx = $01;  Zbm = $02;  // Zero Flag
-  end;
-
-  TCPUINT = object //Interrupt Controller
-    CTRLA: byte;  //Control A
-    STATUS: byte;  //Status
-    LVL0PRI: byte;  //Interrupt Level 0 Priority
-    LVL1VEC: byte;  //Interrupt Level 1 Priority Vector
-  const
-    CVTidx = $05;  CVTbm = $20;  // Compact Vector Table
-    IVSELidx = $06;  IVSELbm = $40;  // Interrupt Vector Select
-    LVL0RRidx = $00;  LVL0RRbm = $01;  // Round-robin Scheduling Enable
-    LVL0PRI0idx = $00;  // Interrupt Level Priority
-    LVL0PRI1idx = $01;  // Interrupt Level Priority
-    LVL0PRI2idx = $02;  // Interrupt Level Priority
-    LVL0PRI3idx = $03;  // Interrupt Level Priority
-    LVL0PRI4idx = $04;  // Interrupt Level Priority
-    LVL0PRI5idx = $05;  // Interrupt Level Priority
-    LVL0PRI6idx = $06;  // Interrupt Level Priority
-    LVL0PRI7idx = $07;  // Interrupt Level Priority
-    LVL1VEC0idx = $00;  // Interrupt Vector with High Priority
-    LVL1VEC1idx = $01;  // Interrupt Vector with High Priority
-    LVL1VEC2idx = $02;  // Interrupt Vector with High Priority
-    LVL1VEC3idx = $03;  // Interrupt Vector with High Priority
-    LVL1VEC4idx = $04;  // Interrupt Vector with High Priority
-    LVL1VEC5idx = $05;  // Interrupt Vector with High Priority
-    LVL1VEC6idx = $06;  // Interrupt Vector with High Priority
-    LVL1VEC7idx = $07;  // Interrupt Vector with High Priority
-    LVL0EXidx = $00;  LVL0EXbm = $01;  // Level 0 Interrupt Executing
-    LVL1EXidx = $01;  LVL1EXbm = $02;  // Level 1 Interrupt Executing
-    NMIEXidx = $07;  NMIEXbm = $80;  // Non-maskable Interrupt Executing
-  end;
-
-  TCRCSCAN = object //CRCSCAN
-    CTRLA: byte;  //Control A
-    CTRLB: byte;  //Control B
-    STATUS: byte;  //Status
-  const
-    ENABLEidx = $00;  ENABLEbm = $01;  // Enable CRC scan
-    NMIENidx = $01;  NMIENbm = $02;  // Enable NMI Trigger
-    RESETidx = $07;  RESETbm = $80;  // Reset CRC scan
-    MODE0idx = $04;  // CRC Flash Access Mode
-    MODE1idx = $05;  // CRC Flash Access Mode
-    SRC0idx = $00;  // CRC Source
-    SRC1idx = $01;  // CRC Source
-    BUSYidx = $00;  BUSYbm = $01;  // CRC Busy
-    OKidx = $01;  OKbm = $02;  // CRC Ok
-  end;
-
-  TDAC = object //Digital to Analog Converter
-    CTRLA: byte;  //Control Register A
-    DATA: byte;  //DATA Register
-  const
-    ENABLEidx = $00;  ENABLEbm = $01;  // DAC Enable
-    OUTENidx = $06;  OUTENbm = $40;  // Output Buffer Enable
-    RUNSTDBYidx = $07;  RUNSTDBYbm = $80;  // Run in Standby Mode
-  end;
-
-  TEVSYS = object //Event System
-    ASYNCSTROBE: byte;  //Asynchronous Channel Strobe
-    SYNCSTROBE: byte;  //Synchronous Channel Strobe
-    ASYNCCH0: byte;  //Asynchronous Channel 0 Generator Selection
-    ASYNCCH1: byte;  //Asynchronous Channel 1 Generator Selection
-    ASYNCCH2: byte;  //Asynchronous Channel 2 Generator Selection
-    ASYNCCH3: byte;  //Asynchronous Channel 3 Generator Selection
-    Reserved6: byte;
-    Reserved7: byte;
-    Reserved8: byte;
-    Reserved9: byte;
-    SYNCCH0: byte;  //Synchronous Channel 0 Generator Selection
-    SYNCCH1: byte;  //Synchronous Channel 1 Generator Selection
-    Reserved12: byte;
-    Reserved13: byte;
-    Reserved14: byte;
-    Reserved15: byte;
-    Reserved16: byte;
-    Reserved17: byte;
-    ASYNCUSER0: byte;  //Asynchronous User Ch 0 Input Selection - TCB0
-    ASYNCUSER1: byte;  //Asynchronous User Ch 1 Input Selection - ADC0
-    ASYNCUSER2: byte;  //Asynchronous User Ch 2 Input Selection - CCL LUT0 Event 0
-    ASYNCUSER3: byte;  //Asynchronous User Ch 3 Input Selection - CCL LUT1 Event 0
-    ASYNCUSER4: byte;  //Asynchronous User Ch 4 Input Selection - CCL LUT0 Event 1
-    ASYNCUSER5: byte;  //Asynchronous User Ch 5 Input Selection - CCL LUT1 Event 1
-    ASYNCUSER6: byte;  //Asynchronous User Ch 6 Input Selection - TCD0 Event 0
-    ASYNCUSER7: byte;  //Asynchronous User Ch 7 Input Selection - TCD0 Event 1
-    ASYNCUSER8: byte;  //Asynchronous User Ch 8 Input Selection - Event Out 0
-    ASYNCUSER9: byte;  //Asynchronous User Ch 9 Input Selection - Event Out 1
-    ASYNCUSER10: byte;  //Asynchronous User Ch 10 Input Selection - Event Out 2
-    ASYNCUSER11: byte;  //Asynchronous User Ch 11 Input Selection - TCB1
-    ASYNCUSER12: byte;  //Asynchronous User Ch 12 Input Selection - ADC1
-    Reserved31: byte;
-    Reserved32: byte;
-    Reserved33: byte;
-    SYNCUSER0: byte;  //Synchronous User Ch 0 - TCA0
-    SYNCUSER1: byte;  //Synchronous User Ch 1 - USART0
-  const
-    ASYNCCH00idx = $00;  // Asynchronous Channel 0 Generator Selection
-    ASYNCCH01idx = $01;  // Asynchronous Channel 0 Generator Selection
-    ASYNCCH02idx = $02;  // Asynchronous Channel 0 Generator Selection
-    ASYNCCH03idx = $03;  // Asynchronous Channel 0 Generator Selection
-    ASYNCCH04idx = $04;  // Asynchronous Channel 0 Generator Selection
-    ASYNCCH05idx = $05;  // Asynchronous Channel 0 Generator Selection
-    ASYNCCH06idx = $06;  // Asynchronous Channel 0 Generator Selection
-    ASYNCCH07idx = $07;  // Asynchronous Channel 0 Generator Selection
-    ASYNCCH10idx = $00;  // Asynchronous Channel 1 Generator Selection
-    ASYNCCH11idx = $01;  // Asynchronous Channel 1 Generator Selection
-    ASYNCCH12idx = $02;  // Asynchronous Channel 1 Generator Selection
-    ASYNCCH13idx = $03;  // Asynchronous Channel 1 Generator Selection
-    ASYNCCH14idx = $04;  // Asynchronous Channel 1 Generator Selection
-    ASYNCCH15idx = $05;  // Asynchronous Channel 1 Generator Selection
-    ASYNCCH16idx = $06;  // Asynchronous Channel 1 Generator Selection
-    ASYNCCH17idx = $07;  // Asynchronous Channel 1 Generator Selection
-    ASYNCCH20idx = $00;  // Asynchronous Channel 2 Generator Selection
-    ASYNCCH21idx = $01;  // Asynchronous Channel 2 Generator Selection
-    ASYNCCH22idx = $02;  // Asynchronous Channel 2 Generator Selection
-    ASYNCCH23idx = $03;  // Asynchronous Channel 2 Generator Selection
-    ASYNCCH24idx = $04;  // Asynchronous Channel 2 Generator Selection
-    ASYNCCH25idx = $05;  // Asynchronous Channel 2 Generator Selection
-    ASYNCCH26idx = $06;  // Asynchronous Channel 2 Generator Selection
-    ASYNCCH27idx = $07;  // Asynchronous Channel 2 Generator Selection
-    ASYNCCH30idx = $00;  // Asynchronous Channel 3 Generator Selection
-    ASYNCCH31idx = $01;  // Asynchronous Channel 3 Generator Selection
-    ASYNCCH32idx = $02;  // Asynchronous Channel 3 Generator Selection
-    ASYNCCH33idx = $03;  // Asynchronous Channel 3 Generator Selection
-    ASYNCCH34idx = $04;  // Asynchronous Channel 3 Generator Selection
-    ASYNCCH35idx = $05;  // Asynchronous Channel 3 Generator Selection
-    ASYNCCH36idx = $06;  // Asynchronous Channel 3 Generator Selection
-    ASYNCCH37idx = $07;  // Asynchronous Channel 3 Generator Selection
-    ASYNCUSER00idx = $00;  // Asynchronous User Ch 0 Input Selection - TCB0
-    ASYNCUSER01idx = $01;  // Asynchronous User Ch 0 Input Selection - TCB0
-    ASYNCUSER02idx = $02;  // Asynchronous User Ch 0 Input Selection - TCB0
-    ASYNCUSER03idx = $03;  // Asynchronous User Ch 0 Input Selection - TCB0
-    ASYNCUSER04idx = $04;  // Asynchronous User Ch 0 Input Selection - TCB0
-    ASYNCUSER05idx = $05;  // Asynchronous User Ch 0 Input Selection - TCB0
-    ASYNCUSER06idx = $06;  // Asynchronous User Ch 0 Input Selection - TCB0
-    ASYNCUSER07idx = $07;  // Asynchronous User Ch 0 Input Selection - TCB0
-    ASYNCUSER10idx = $00;  // Asynchronous User Ch 1 Input Selection - ADC0
-    ASYNCUSER11idx = $01;  // Asynchronous User Ch 1 Input Selection - ADC0
-    ASYNCUSER12idx = $02;  // Asynchronous User Ch 1 Input Selection - ADC0
-    ASYNCUSER13idx = $03;  // Asynchronous User Ch 1 Input Selection - ADC0
-    ASYNCUSER14idx = $04;  // Asynchronous User Ch 1 Input Selection - ADC0
-    ASYNCUSER15idx = $05;  // Asynchronous User Ch 1 Input Selection - ADC0
-    ASYNCUSER16idx = $06;  // Asynchronous User Ch 1 Input Selection - ADC0
-    ASYNCUSER17idx = $07;  // Asynchronous User Ch 1 Input Selection - ADC0
-    ASYNCUSER20idx = $00;  // Asynchronous User Ch 2 Input Selection - CCL LUT0 Event 0
-    ASYNCUSER21idx = $01;  // Asynchronous User Ch 2 Input Selection - CCL LUT0 Event 0
-    ASYNCUSER22idx = $02;  // Asynchronous User Ch 2 Input Selection - CCL LUT0 Event 0
-    ASYNCUSER23idx = $03;  // Asynchronous User Ch 2 Input Selection - CCL LUT0 Event 0
-    ASYNCUSER24idx = $04;  // Asynchronous User Ch 2 Input Selection - CCL LUT0 Event 0
-    ASYNCUSER25idx = $05;  // Asynchronous User Ch 2 Input Selection - CCL LUT0 Event 0
-    ASYNCUSER26idx = $06;  // Asynchronous User Ch 2 Input Selection - CCL LUT0 Event 0
-    ASYNCUSER27idx = $07;  // Asynchronous User Ch 2 Input Selection - CCL LUT0 Event 0
-    ASYNCUSER30idx = $00;  // Asynchronous User Ch 3 Input Selection - CCL LUT1 Event 0
-    ASYNCUSER31idx = $01;  // Asynchronous User Ch 3 Input Selection - CCL LUT1 Event 0
-    ASYNCUSER32idx = $02;  // Asynchronous User Ch 3 Input Selection - CCL LUT1 Event 0
-    ASYNCUSER33idx = $03;  // Asynchronous User Ch 3 Input Selection - CCL LUT1 Event 0
-    ASYNCUSER34idx = $04;  // Asynchronous User Ch 3 Input Selection - CCL LUT1 Event 0
-    ASYNCUSER35idx = $05;  // Asynchronous User Ch 3 Input Selection - CCL LUT1 Event 0
-    ASYNCUSER36idx = $06;  // Asynchronous User Ch 3 Input Selection - CCL LUT1 Event 0
-    ASYNCUSER37idx = $07;  // Asynchronous User Ch 3 Input Selection - CCL LUT1 Event 0
-    ASYNCUSER40idx = $00;  // Asynchronous User Ch 4 Input Selection - CCL LUT0 Event 1
-    ASYNCUSER41idx = $01;  // Asynchronous User Ch 4 Input Selection - CCL LUT0 Event 1
-    ASYNCUSER42idx = $02;  // Asynchronous User Ch 4 Input Selection - CCL LUT0 Event 1
-    ASYNCUSER43idx = $03;  // Asynchronous User Ch 4 Input Selection - CCL LUT0 Event 1
-    ASYNCUSER44idx = $04;  // Asynchronous User Ch 4 Input Selection - CCL LUT0 Event 1
-    ASYNCUSER45idx = $05;  // Asynchronous User Ch 4 Input Selection - CCL LUT0 Event 1
-    ASYNCUSER46idx = $06;  // Asynchronous User Ch 4 Input Selection - CCL LUT0 Event 1
-    ASYNCUSER47idx = $07;  // Asynchronous User Ch 4 Input Selection - CCL LUT0 Event 1
-    ASYNCUSER50idx = $00;  // Asynchronous User Ch 5 Input Selection - CCL LUT1 Event 1
-    ASYNCUSER51idx = $01;  // Asynchronous User Ch 5 Input Selection - CCL LUT1 Event 1
-    ASYNCUSER52idx = $02;  // Asynchronous User Ch 5 Input Selection - CCL LUT1 Event 1
-    ASYNCUSER53idx = $03;  // Asynchronous User Ch 5 Input Selection - CCL LUT1 Event 1
-    ASYNCUSER54idx = $04;  // Asynchronous User Ch 5 Input Selection - CCL LUT1 Event 1
-    ASYNCUSER55idx = $05;  // Asynchronous User Ch 5 Input Selection - CCL LUT1 Event 1
-    ASYNCUSER56idx = $06;  // Asynchronous User Ch 5 Input Selection - CCL LUT1 Event 1
-    ASYNCUSER57idx = $07;  // Asynchronous User Ch 5 Input Selection - CCL LUT1 Event 1
-    ASYNCUSER60idx = $00;  // Asynchronous User Ch 6 Input Selection - TCD0 Event 0
-    ASYNCUSER61idx = $01;  // Asynchronous User Ch 6 Input Selection - TCD0 Event 0
-    ASYNCUSER62idx = $02;  // Asynchronous User Ch 6 Input Selection - TCD0 Event 0
-    ASYNCUSER63idx = $03;  // Asynchronous User Ch 6 Input Selection - TCD0 Event 0
-    ASYNCUSER64idx = $04;  // Asynchronous User Ch 6 Input Selection - TCD0 Event 0
-    ASYNCUSER65idx = $05;  // Asynchronous User Ch 6 Input Selection - TCD0 Event 0
-    ASYNCUSER66idx = $06;  // Asynchronous User Ch 6 Input Selection - TCD0 Event 0
-    ASYNCUSER67idx = $07;  // Asynchronous User Ch 6 Input Selection - TCD0 Event 0
-    ASYNCUSER70idx = $00;  // Asynchronous User Ch 7 Input Selection - TCD0 Event 1
-    ASYNCUSER71idx = $01;  // Asynchronous User Ch 7 Input Selection - TCD0 Event 1
-    ASYNCUSER72idx = $02;  // Asynchronous User Ch 7 Input Selection - TCD0 Event 1
-    ASYNCUSER73idx = $03;  // Asynchronous User Ch 7 Input Selection - TCD0 Event 1
-    ASYNCUSER74idx = $04;  // Asynchronous User Ch 7 Input Selection - TCD0 Event 1
-    ASYNCUSER75idx = $05;  // Asynchronous User Ch 7 Input Selection - TCD0 Event 1
-    ASYNCUSER76idx = $06;  // Asynchronous User Ch 7 Input Selection - TCD0 Event 1
-    ASYNCUSER77idx = $07;  // Asynchronous User Ch 7 Input Selection - TCD0 Event 1
-    ASYNCUSER80idx = $00;  // Asynchronous User Ch 8 Input Selection - Event Out 0
-    ASYNCUSER81idx = $01;  // Asynchronous User Ch 8 Input Selection - Event Out 0
-    ASYNCUSER82idx = $02;  // Asynchronous User Ch 8 Input Selection - Event Out 0
-    ASYNCUSER83idx = $03;  // Asynchronous User Ch 8 Input Selection - Event Out 0
-    ASYNCUSER84idx = $04;  // Asynchronous User Ch 8 Input Selection - Event Out 0
-    ASYNCUSER85idx = $05;  // Asynchronous User Ch 8 Input Selection - Event Out 0
-    ASYNCUSER86idx = $06;  // Asynchronous User Ch 8 Input Selection - Event Out 0
-    ASYNCUSER87idx = $07;  // Asynchronous User Ch 8 Input Selection - Event Out 0
-    ASYNCUSER90idx = $00;  // Asynchronous User Ch 9 Input Selection - Event Out 1
-    ASYNCUSER91idx = $01;  // Asynchronous User Ch 9 Input Selection - Event Out 1
-    ASYNCUSER92idx = $02;  // Asynchronous User Ch 9 Input Selection - Event Out 1
-    ASYNCUSER93idx = $03;  // Asynchronous User Ch 9 Input Selection - Event Out 1
-    ASYNCUSER94idx = $04;  // Asynchronous User Ch 9 Input Selection - Event Out 1
-    ASYNCUSER95idx = $05;  // Asynchronous User Ch 9 Input Selection - Event Out 1
-    ASYNCUSER96idx = $06;  // Asynchronous User Ch 9 Input Selection - Event Out 1
-    ASYNCUSER97idx = $07;  // Asynchronous User Ch 9 Input Selection - Event Out 1
-    ASYNCUSER100idx = $00;  // Asynchronous User Ch 10 Input Selection - Event Out 2
-    ASYNCUSER101idx = $01;  // Asynchronous User Ch 10 Input Selection - Event Out 2
-    ASYNCUSER102idx = $02;  // Asynchronous User Ch 10 Input Selection - Event Out 2
-    ASYNCUSER103idx = $03;  // Asynchronous User Ch 10 Input Selection - Event Out 2
-    ASYNCUSER104idx = $04;  // Asynchronous User Ch 10 Input Selection - Event Out 2
-    ASYNCUSER105idx = $05;  // Asynchronous User Ch 10 Input Selection - Event Out 2
-    ASYNCUSER106idx = $06;  // Asynchronous User Ch 10 Input Selection - Event Out 2
-    ASYNCUSER107idx = $07;  // Asynchronous User Ch 10 Input Selection - Event Out 2
-    ASYNCUSER110idx = $00;  // Asynchronous User Ch 11 Input Selection - TCB1
-    ASYNCUSER111idx = $01;  // Asynchronous User Ch 11 Input Selection - TCB1
-    ASYNCUSER112idx = $02;  // Asynchronous User Ch 11 Input Selection - TCB1
-    ASYNCUSER113idx = $03;  // Asynchronous User Ch 11 Input Selection - TCB1
-    ASYNCUSER114idx = $04;  // Asynchronous User Ch 11 Input Selection - TCB1
-    ASYNCUSER115idx = $05;  // Asynchronous User Ch 11 Input Selection - TCB1
-    ASYNCUSER116idx = $06;  // Asynchronous User Ch 11 Input Selection - TCB1
-    ASYNCUSER117idx = $07;  // Asynchronous User Ch 11 Input Selection - TCB1
-    ASYNCUSER120idx = $00;  // Asynchronous User Ch 12 Input Selection - ADC0
-    ASYNCUSER121idx = $01;  // Asynchronous User Ch 12 Input Selection - ADC0
-    ASYNCUSER122idx = $02;  // Asynchronous User Ch 12 Input Selection - ADC0
-    ASYNCUSER123idx = $03;  // Asynchronous User Ch 12 Input Selection - ADC0
-    ASYNCUSER124idx = $04;  // Asynchronous User Ch 12 Input Selection - ADC0
-    ASYNCUSER125idx = $05;  // Asynchronous User Ch 12 Input Selection - ADC0
-    ASYNCUSER126idx = $06;  // Asynchronous User Ch 12 Input Selection - ADC0
-    ASYNCUSER127idx = $07;  // Asynchronous User Ch 12 Input Selection - ADC0
-    SYNCCH00idx = $00;  // Synchronous Channel 0 Generator Selection
-    SYNCCH01idx = $01;  // Synchronous Channel 0 Generator Selection
-    SYNCCH02idx = $02;  // Synchronous Channel 0 Generator Selection
-    SYNCCH03idx = $03;  // Synchronous Channel 0 Generator Selection
-    SYNCCH04idx = $04;  // Synchronous Channel 0 Generator Selection
-    SYNCCH05idx = $05;  // Synchronous Channel 0 Generator Selection
-    SYNCCH06idx = $06;  // Synchronous Channel 0 Generator Selection
-    SYNCCH07idx = $07;  // Synchronous Channel 0 Generator Selection
-    SYNCCH10idx = $00;  // Synchronous Channel 1 Generator Selection
-    SYNCCH11idx = $01;  // Synchronous Channel 1 Generator Selection
-    SYNCCH12idx = $02;  // Synchronous Channel 1 Generator Selection
-    SYNCCH13idx = $03;  // Synchronous Channel 1 Generator Selection
-    SYNCCH14idx = $04;  // Synchronous Channel 1 Generator Selection
-    SYNCCH15idx = $05;  // Synchronous Channel 1 Generator Selection
-    SYNCCH16idx = $06;  // Synchronous Channel 1 Generator Selection
-    SYNCCH17idx = $07;  // Synchronous Channel 1 Generator Selection
-    SYNCUSER00idx = $00;  // Synchronous User Ch 0 - TCA0
-    SYNCUSER01idx = $01;  // Synchronous User Ch 0 - TCA0
-    SYNCUSER02idx = $02;  // Synchronous User Ch 0 - TCA0
-    SYNCUSER03idx = $03;  // Synchronous User Ch 0 - TCA0
-    SYNCUSER04idx = $04;  // Synchronous User Ch 0 - TCA0
-    SYNCUSER05idx = $05;  // Synchronous User Ch 0 - TCA0
-    SYNCUSER06idx = $06;  // Synchronous User Ch 0 - TCA0
-    SYNCUSER07idx = $07;  // Synchronous User Ch 0 - TCA0
-    SYNCUSER10idx = $00;  // Synchronous User Ch 1 - USART0
-    SYNCUSER11idx = $01;  // Synchronous User Ch 1 - USART0
-    SYNCUSER12idx = $02;  // Synchronous User Ch 1 - USART0
-    SYNCUSER13idx = $03;  // Synchronous User Ch 1 - USART0
-    SYNCUSER14idx = $04;  // Synchronous User Ch 1 - USART0
-    SYNCUSER15idx = $05;  // Synchronous User Ch 1 - USART0
-    SYNCUSER16idx = $06;  // Synchronous User Ch 1 - USART0
-    SYNCUSER17idx = $07;  // Synchronous User Ch 1 - USART0
-  end;
-
-  TFUSE = object //Fuses
-    WDTCFG: byte;  //Watchdog Configuration
-    BODCFG: byte;  //BOD Configuration
-    OSCCFG: byte;  //Oscillator Configuration
-    Reserved3: byte;
-    TCD0CFG: byte;  //TCD0 Configuration
-    SYSCFG0: byte;  //System Configuration 0
-    SYSCFG1: byte;  //System Configuration 1
-    APPEND: byte;  //Application Code Section End
-    BOOTEND: byte;  //Boot Section End
-  const
-    ACTIVE0idx = $02;  // BOD Operation in Active Mode
-    ACTIVE1idx = $03;  // BOD Operation in Active Mode
-    LVL0idx = $05;  // BOD Level
-    LVL1idx = $06;  // BOD Level
-    LVL2idx = $07;  // BOD Level
-    SAMPFREQidx = $04;  SAMPFREQbm = $10;  // BOD Sample Frequency
-    SLEEP0idx = $00;  // BOD Operation in Sleep Mode
-    SLEEP1idx = $01;  // BOD Operation in Sleep Mode
-    FREQSEL0idx = $00;  // Frequency Select
-    FREQSEL1idx = $01;  // Frequency Select
-    OSCLOCKidx = $07;  OSCLOCKbm = $80;  // Oscillator Lock
-    CRCSRC0idx = $06;  // CRC Source
-    CRCSRC1idx = $07;  // CRC Source
-    EESAVEidx = $00;  EESAVEbm = $01;  // EEPROM Save
-    RSTPINCFG0idx = $02;  // Reset Pin Configuration
-    RSTPINCFG1idx = $03;  // Reset Pin Configuration
-    SUT0idx = $00;  // Startup Time
-    SUT1idx = $01;  // Startup Time
-    SUT2idx = $02;  // Startup Time
-    CMPAidx = $00;  CMPAbm = $01;  // Compare A Default Output Value
-    CMPAENidx = $04;  CMPAENbm = $10;  // Compare A Output Enable
-    CMPBidx = $01;  CMPBbm = $02;  // Compare B Default Output Value
-    CMPBENidx = $05;  CMPBENbm = $20;  // Compare B Output Enable
-    CMPCidx = $02;  CMPCbm = $04;  // Compare C Default Output Value
-    CMPCENidx = $06;  CMPCENbm = $40;  // Compare C Output Enable
-    CMPDidx = $03;  CMPDbm = $08;  // Compare D Default Output Value
-    CMPDENidx = $07;  CMPDENbm = $80;  // Compare D Output Enable
-    PERIOD0idx = $00;  // Watchdog Timeout Period
-    PERIOD1idx = $01;  // Watchdog Timeout Period
-    PERIOD2idx = $02;  // Watchdog Timeout Period
-    PERIOD3idx = $03;  // Watchdog Timeout Period
-    WINDOW0idx = $04;  // Watchdog Window Timeout Period
-    WINDOW1idx = $05;  // Watchdog Window Timeout Period
-    WINDOW2idx = $06;  // Watchdog Window Timeout Period
-    WINDOW3idx = $07;  // Watchdog Window Timeout Period
-  end;
-
-  TGPIO = object //General Purpose IO
-    GPIOR0: byte;  //General Purpose IO Register 0
-    GPIOR1: byte;  //General Purpose IO Register 1
-    GPIOR2: byte;  //General Purpose IO Register 2
-    GPIOR3: byte;  //General Purpose IO Register 3
-  end;
-
-  TLOCKBIT = object //Lockbit
-    LOCKBIT: byte;  //Lock bits
-  const
-    LB0idx = $00;  // Lock Bits
-    LB1idx = $01;  // Lock Bits
-    LB2idx = $02;  // Lock Bits
-    LB3idx = $03;  // Lock Bits
-    LB4idx = $04;  // Lock Bits
-    LB5idx = $05;  // Lock Bits
-    LB6idx = $06;  // Lock Bits
-    LB7idx = $07;  // Lock Bits
-  end;
-
-  TNVMCTRL = object //Non-volatile Memory Controller
-    CTRLA: byte;  //Control A
-    CTRLB: byte;  //Control B
-    STATUS: byte;  //Status
-    INTCTRL: byte;  //Interrupt Control
-    INTFLAGS: byte;  //Interrupt Flags
-    Reserved5: byte;
-    DATA: word;  //Data
-    ADDR: word;  //Address
-  const
-    CMD0idx = $00;  // Command
-    CMD1idx = $01;  // Command
-    CMD2idx = $02;  // Command
-    APCWPidx = $00;  APCWPbm = $01;  // Application code write protect
-    BOOTLOCKidx = $01;  BOOTLOCKbm = $02;  // Boot Lock
-    EEREADYidx = $00;  EEREADYbm = $01;  // EEPROM Ready
-    EEBUSYidx = $01;  EEBUSYbm = $02;  // EEPROM busy
-    FBUSYidx = $00;  FBUSYbm = $01;  // Flash busy
-    WRERRORidx = $02;  WRERRORbm = $04;  // Write error
-  end;
-
-  TPORT = object //I/O Ports
-    DIR: byte;  //Data Direction
-    DIRSET: byte;  //Data Direction Set
-    DIRCLR: byte;  //Data Direction Clear
-    DIRTGL: byte;  //Data Direction Toggle
-    OUT_: byte;  //Output Value
-    OUTSET: byte;  //Output Value Set
-    OUTCLR: byte;  //Output Value Clear
-    OUTTGL: byte;  //Output Value Toggle
-    IN_: byte;  //Input Value
-    INTFLAGS: byte;  //Interrupt Flags
-    Reserved10: byte;
-    Reserved11: byte;
-    Reserved12: byte;
-    Reserved13: byte;
-    Reserved14: byte;
-    Reserved15: byte;
-    PIN0CTRL: byte;  //Pin 0 Control
-    PIN1CTRL: byte;  //Pin 1 Control
-    PIN2CTRL: byte;  //Pin 2 Control
-    PIN3CTRL: byte;  //Pin 3 Control
-    PIN4CTRL: byte;  //Pin 4 Control
-    PIN5CTRL: byte;  //Pin 5 Control
-    PIN6CTRL: byte;  //Pin 6 Control
-    PIN7CTRL: byte;  //Pin 7 Control
-  const
-    INT0idx = $00;  // Pin Interrupt
-    INT1idx = $01;  // Pin Interrupt
-    INT2idx = $02;  // Pin Interrupt
-    INT3idx = $03;  // Pin Interrupt
-    INT4idx = $04;  // Pin Interrupt
-    INT5idx = $05;  // Pin Interrupt
-    INT6idx = $06;  // Pin Interrupt
-    INT7idx = $07;  // Pin Interrupt
-    INVENidx = $07;  INVENbm = $80;  // Inverted I/O Enable
-    ISC0idx = $00;  // Input/Sense Configuration
-    ISC1idx = $01;  // Input/Sense Configuration
-    ISC2idx = $02;  // Input/Sense Configuration
-    PULLUPENidx = $03;  PULLUPENbm = $08;  // Pullup enable
-  end;
-
-  TPORTMUX = object //Port Multiplexer
-    CTRLA: byte;  //Port Multiplexer Control A
-    CTRLB: byte;  //Port Multiplexer Control B
-    CTRLC: byte;  //Port Multiplexer Control C
-    CTRLD: byte;  //Port Multiplexer Control D
-  const
-    EVOUT0idx = $00;  EVOUT0bm = $01;  // Event Output 0
-    EVOUT1idx = $01;  EVOUT1bm = $02;  // Event Output 1
-    EVOUT2idx = $02;  EVOUT2bm = $04;  // Event Output 2
-    LUT0idx = $04;  LUT0bm = $10;  // Configurable Custom Logic LUT0
-    LUT1idx = $05;  LUT1bm = $20;  // Configurable Custom Logic LUT1
-    SPI0idx = $02;  SPI0bm = $04;  // Port Multiplexer SPI0
-    TWI0idx = $04;  TWI0bm = $10;  // Port Multiplexer TWI0
-    USART0idx = $00;  USART0bm = $01;  // Port Multiplexer USART0
-    TCA00idx = $00;  TCA00bm = $01;  // Port Multiplexer TCA0 Output 0
-    TCA01idx = $01;  TCA01bm = $02;  // Port Multiplexer TCA0 Output 1
-    TCA02idx = $02;  TCA02bm = $04;  // Port Multiplexer TCA0 Output 2
-    TCA03idx = $03;  TCA03bm = $08;  // Port Multiplexer TCA0 Output 3
-    TCA04idx = $04;  TCA04bm = $10;  // Port Multiplexer TCA0 Output 4
-    TCA05idx = $05;  TCA05bm = $20;  // Port Multiplexer TCA0 Output 5
-    TCB0idx = $00;  TCB0bm = $01;  // Port Multiplexer TCB
-  end;
-
-  TRSTCTRL = object //Reset controller
-    RSTFR: byte;  //Reset Flags
-    SWRR: byte;  //Software Reset
-  const
-    BORFidx = $01;  BORFbm = $02;  // Brown out detector Reset flag
-    EXTRFidx = $02;  EXTRFbm = $04;  // External Reset flag
-    PORFidx = $00;  PORFbm = $01;  // Power on Reset flag
-    SWRFidx = $04;  SWRFbm = $10;  // Software Reset flag
-    UPDIRFidx = $05;  UPDIRFbm = $20;  // UPDI Reset flag
-    WDRFidx = $03;  WDRFbm = $08;  // Watch dog Reset flag
-    SWREidx = $00;  SWREbm = $01;  // Software reset enable
-  end;
-
-  TRTC = object //Real-Time Counter
-    CTRLA: byte;  //Control A
-    STATUS: byte;  //Status
-    INTCTRL: byte;  //Interrupt Control
-    INTFLAGS: byte;  //Interrupt Flags
-    TEMP: byte;  //Temporary
-    DBGCTRL: byte;  //Debug control
-    Reserved6: byte;
-    CLKSEL: byte;  //Clock Select
-    CNT: word;  //Counter
-    PER: word;  //Period
-    CMP: word;  //Compare
-    Reserved14: byte;
-    Reserved15: byte;
-    PITCTRLA: byte;  //PIT Control A
-    PITSTATUS: byte;  //PIT Status
-    PITINTCTRL: byte;  //PIT Interrupt Control
-    PITINTFLAGS: byte;  //PIT Interrupt Flags
-    Reserved20: byte;
-    PITDBGCTRL: byte;  //PIT Debug control
-  const
-    CLKSEL0idx = $00;  // Clock Select
-    CLKSEL1idx = $01;  // Clock Select
-    PRESCALER0idx = $03;  // Prescaling Factor
-    PRESCALER1idx = $04;  // Prescaling Factor
-    PRESCALER2idx = $05;  // Prescaling Factor
-    PRESCALER3idx = $06;  // Prescaling Factor
-    RTCENidx = $00;  RTCENbm = $01;  // Enable
-    RUNSTDBYidx = $07;  RUNSTDBYbm = $80;  // Run In Standby
-    DBGRUNidx = $00;  DBGRUNbm = $01;  // Run in debug
-    CMPidx = $01;  CMPbm = $02;  // Compare Match Interrupt enable
-    OVFidx = $00;  OVFbm = $01;  // Overflow Interrupt enable
-    PERIOD0idx = $03;  // Period
-    PERIOD1idx = $04;  // Period
-    PERIOD2idx = $05;  // Period
-    PERIOD3idx = $06;  // Period
-    PITENidx = $00;  PITENbm = $01;  // Enable
-    PIidx = $00;  PIbm = $01;  // Periodic Interrupt
-    CTRLBUSYidx = $00;  CTRLBUSYbm = $01;  // CTRLA Synchronization Busy Flag
-    CMPBUSYidx = $03;  CMPBUSYbm = $08;  // Comparator Synchronization Busy Flag
-    CNTBUSYidx = $01;  CNTBUSYbm = $02;  // Count Synchronization Busy Flag
-    CTRLABUSYidx = $00;  CTRLABUSYbm = $01;  // CTRLA Synchronization Busy Flag
-    PERBUSYidx = $02;  PERBUSYbm = $04;  // Period Synchronization Busy Flag
-  end;
-
-  TSIGROW = object //Signature row
-    DEVICEID0: byte;  //Device ID Byte 0
-    DEVICEID1: byte;  //Device ID Byte 1
-    DEVICEID2: byte;  //Device ID Byte 2
-    SERNUM0: byte;  //Serial Number Byte 0
-    SERNUM1: byte;  //Serial Number Byte 1
-    SERNUM2: byte;  //Serial Number Byte 2
-    SERNUM3: byte;  //Serial Number Byte 3
-    SERNUM4: byte;  //Serial Number Byte 4
-    SERNUM5: byte;  //Serial Number Byte 5
-    SERNUM6: byte;  //Serial Number Byte 6
-    SERNUM7: byte;  //Serial Number Byte 7
-    SERNUM8: byte;  //Serial Number Byte 8
-    SERNUM9: byte;  //Serial Number Byte 9
-    Reserved13: byte;
-    Reserved14: byte;
-    Reserved15: byte;
-    Reserved16: byte;
-    Reserved17: byte;
-    Reserved18: byte;
-    Reserved19: byte;
-    Reserved20: byte;
-    Reserved21: byte;
-    Reserved22: byte;
-    Reserved23: byte;
-    Reserved24: byte;
-    Reserved25: byte;
-    Reserved26: byte;
-    Reserved27: byte;
-    Reserved28: byte;
-    Reserved29: byte;
-    Reserved30: byte;
-    Reserved31: byte;
-    TEMPSENSE0: byte;  //Temperature Sensor Calibration Byte 0
-    TEMPSENSE1: byte;  //Temperature Sensor Calibration Byte 1
-    OSC16ERR3V: byte;  //OSC16 error at 3V
-    OSC16ERR5V: byte;  //OSC16 error at 5V
-    OSC20ERR3V: byte;  //OSC20 error at 3V
-    OSC20ERR5V: byte;  //OSC20 error at 5V
-  end;
-
-  TSLPCTRL = object //Sleep Controller
-    CTRLA: byte;  //Control
-  const
-    SENidx = $00;  SENbm = $01;  // Sleep enable
-    SMODE0idx = $01;  // Sleep mode
-    SMODE1idx = $02;  // Sleep mode
-  end;
-
-  TSPI = object //Serial Peripheral Interface
-    CTRLA: byte;  //Control A
-    CTRLB: byte;  //Control B
-    INTCTRL: byte;  //Interrupt Control
-    INTFLAGS: byte;  //Interrupt Flags
-    DATA: byte;  //Data
-  const
-    CLK2Xidx = $04;  CLK2Xbm = $10;  // Enable Double Speed
-    DORDidx = $06;  DORDbm = $40;  // Data Order Setting
-    ENABLEidx = $00;  ENABLEbm = $01;  // Enable Module
-    MASTERidx = $05;  MASTERbm = $20;  // Master Operation Enable
-    PRESC0idx = $01;  // Prescaler
-    PRESC1idx = $02;  // Prescaler
-    BUFENidx = $07;  BUFENbm = $80;  // Buffer Mode Enable
-    BUFWRidx = $06;  BUFWRbm = $40;  // Buffer Write Mode
-    MODE0idx = $00;  // SPI Mode
-    MODE1idx = $01;  // SPI Mode
-    SSDidx = $02;  SSDbm = $04;  // Slave Select Disable
-    DREIEidx = $05;  DREIEbm = $20;  // Data Register Empty Interrupt Enable
-    IEidx = $00;  IEbm = $01;  // Interrupt Enable
-    RXCIEidx = $07;  RXCIEbm = $80;  // Receive Complete Interrupt Enable
-    SSIEidx = $04;  SSIEbm = $10;  // Slave Select Trigger Interrupt Enable
-    TXCIEidx = $06;  TXCIEbm = $40;  // Transfer Complete Interrupt Enable
-  end;
-
-  TSYSCFG = object //System Configuration Registers
-    Reserved0: byte;
-    REVID: byte;  //Revision ID
-    EXTBRK: byte;  //External Break
-  const
-    ENEXTBRKidx = $00;  ENEXTBRKbm = $01;  // External break enable
-  end;
-
-  TTCA_SINGLE = object //16-bit Timer/Counter Type A - Single Mode
-    CTRLA: byte;  //Control A
-    CTRLB: byte;  //Control B
-    CTRLC: byte;  //Control C
-    CTRLD: byte;  //Control D
-    CTRLECLR: byte;  //Control E Clear
-    CTRLESET: byte;  //Control E Set
-    CTRLFCLR: byte;  //Control F Clear
-    CTRLFSET: byte;  //Control F Set
-    Reserved8: byte;
-    EVCTRL: byte;  //Event Control
-    INTCTRL: byte;  //Interrupt Control
-    INTFLAGS: byte;  //Interrupt Flags
-    Reserved12: byte;
-    Reserved13: byte;
-    DBGCTRL: byte;  //Degbug Control
-    TEMP: byte;  //Temporary data for 16-bit Access
-    Reserved16: byte;
-    Reserved17: byte;
-    Reserved18: byte;
-    Reserved19: byte;
-    Reserved20: byte;
-    Reserved21: byte;
-    Reserved22: byte;
-    Reserved23: byte;
-    Reserved24: byte;
-    Reserved25: byte;
-    Reserved26: byte;
-    Reserved27: byte;
-    Reserved28: byte;
-    Reserved29: byte;
-    Reserved30: byte;
-    Reserved31: byte;
-    CNT: word;  //Count
-    Reserved34: byte;
-    Reserved35: byte;
-    Reserved36: byte;
-    Reserved37: byte;
-    PER: word;  //Period
-    CMP0: word;  //Compare 0
-    CMP1: word;  //Compare 1
-    CMP2: word;  //Compare 2
-    Reserved46: byte;
-    Reserved47: byte;
-    Reserved48: byte;
-    Reserved49: byte;
-    Reserved50: byte;
-    Reserved51: byte;
-    Reserved52: byte;
-    Reserved53: byte;
-    PERBUF: word;  //Period Buffer
-    CMP0BUF: word;  //Compare 0 Buffer
-    CMP1BUF: word;  //Compare 1 Buffer
-    CMP2BUF: word;  //Compare 2 Buffer
-  const
-    CLKSEL0idx = $01;  // Clock Selection
-    CLKSEL1idx = $02;  // Clock Selection
-    CLKSEL2idx = $03;  // Clock Selection
-    ENABLEidx = $00;  ENABLEbm = $01;  // Module Enable
-    ALUPDidx = $03;  ALUPDbm = $08;  // Auto Lock Update
-    CMP0ENidx = $04;  CMP0ENbm = $10;  // Compare 0 Enable
-    CMP1ENidx = $05;  CMP1ENbm = $20;  // Compare 1 Enable
-    CMP2ENidx = $06;  CMP2ENbm = $40;  // Compare 2 Enable
-    WGMODE0idx = $00;  // Waveform generation mode
-    WGMODE1idx = $01;  // Waveform generation mode
-    WGMODE2idx = $02;  // Waveform generation mode
-    CMP0OVidx = $00;  CMP0OVbm = $01;  // Compare 0 Waveform Output Value
-    CMP1OVidx = $01;  CMP1OVbm = $02;  // Compare 1 Waveform Output Value
-    CMP2OVidx = $02;  CMP2OVbm = $04;  // Compare 2 Waveform Output Value
-    SPLITMidx = $00;  SPLITMbm = $01;  // Split Mode Enable
-    CMD0idx = $02;  // Command
-    CMD1idx = $03;  // Command
-    DIRidx = $00;  DIRbm = $01;  // Direction
-    LUPDidx = $01;  LUPDbm = $02;  // Lock Update
-    CMP0BVidx = $01;  CMP0BVbm = $02;  // Compare 0 Buffer Valid
-    CMP1BVidx = $02;  CMP1BVbm = $04;  // Compare 1 Buffer Valid
-    CMP2BVidx = $03;  CMP2BVbm = $08;  // Compare 2 Buffer Valid
-    PERBVidx = $00;  PERBVbm = $01;  // Period Buffer Valid
-    DBGRUNidx = $00;  DBGRUNbm = $01;  // Debug Run
-    CNTEIidx = $00;  CNTEIbm = $01;  // Count on Event Input
-    EVACT0idx = $01;  // Event Action
-    EVACT1idx = $02;  // Event Action
-    CMP0idx = $04;  CMP0bm = $10;  // Compare 0 Interrupt
-    CMP1idx = $05;  CMP1bm = $20;  // Compare 1 Interrupt
-    CMP2idx = $06;  CMP2bm = $40;  // Compare 2 Interrupt
-    OVFidx = $00;  OVFbm = $01;  // Overflow Interrupt
-  end;
-
-  TTCA_SPLIT = object //16-bit Timer/Counter Type A - Split Mode
-    CTRLA: byte;  //Control A
-    CTRLB: byte;  //Control B
-    CTRLC: byte;  //Control C
-    CTRLD: byte;  //Control D
-    CTRLECLR: byte;  //Control E Clear
-    CTRLESET: byte;  //Control E Set
-    Reserved6: byte;
-    Reserved7: byte;
-    Reserved8: byte;
-    Reserved9: byte;
-    INTCTRL: byte;  //Interrupt Control
-    INTFLAGS: byte;  //Interrupt Flags
-    Reserved12: byte;
-    Reserved13: byte;
-    DBGCTRL: byte;  //Degbug Control
-    Reserved15: byte;
-    Reserved16: byte;
-    Reserved17: byte;
-    Reserved18: byte;
-    Reserved19: byte;
-    Reserved20: byte;
-    Reserved21: byte;
-    Reserved22: byte;
-    Reserved23: byte;
-    Reserved24: byte;
-    Reserved25: byte;
-    Reserved26: byte;
-    Reserved27: byte;
-    Reserved28: byte;
-    Reserved29: byte;
-    Reserved30: byte;
-    Reserved31: byte;
-    LCNT: byte;  //Low Count
-    HCNT: byte;  //High Count
-    Reserved34: byte;
-    Reserved35: byte;
-    Reserved36: byte;
-    Reserved37: byte;
-    LPER: byte;  //Low Period
-    HPER: byte;  //High Period
-    LCMP0: byte;  //Low Compare
-    HCMP0: byte;  //High Compare
-    LCMP1: byte;  //Low Compare
-    HCMP1: byte;  //High Compare
-    LCMP2: byte;  //Low Compare
-    HCMP2: byte;  //High Compare
-  const
-    CLKSEL0idx = $01;  // Clock Selection
-    CLKSEL1idx = $02;  // Clock Selection
-    CLKSEL2idx = $03;  // Clock Selection
-    ENABLEidx = $00;  ENABLEbm = $01;  // Module Enable
-    HCMP0ENidx = $04;  HCMP0ENbm = $10;  // High Compare 0 Enable
-    HCMP1ENidx = $05;  HCMP1ENbm = $20;  // High Compare 1 Enable
-    HCMP2ENidx = $06;  HCMP2ENbm = $40;  // High Compare 2 Enable
-    LCMP0ENidx = $00;  LCMP0ENbm = $01;  // Low Compare 0 Enable
-    LCMP1ENidx = $01;  LCMP1ENbm = $02;  // Low Compare 1 Enable
-    LCMP2ENidx = $02;  LCMP2ENbm = $04;  // Low Compare 2 Enable
-    HCMP0OVidx = $04;  HCMP0OVbm = $10;  // High Compare 0 Output Value
-    HCMP1OVidx = $05;  HCMP1OVbm = $20;  // High Compare 1 Output Value
-    HCMP2OVidx = $06;  HCMP2OVbm = $40;  // High Compare 2 Output Value
-    LCMP0OVidx = $00;  LCMP0OVbm = $01;  // Low Compare 0 Output Value
-    LCMP1OVidx = $01;  LCMP1OVbm = $02;  // Low Compare 1 Output Value
-    LCMP2OVidx = $02;  LCMP2OVbm = $04;  // Low Compare 2 Output Value
-    SPLITMidx = $00;  SPLITMbm = $01;  // Split Mode Enable
-    CMD0idx = $02;  // Command
-    CMD1idx = $03;  // Command
-    DBGRUNidx = $00;  DBGRUNbm = $01;  // Debug Run
-    HUNFidx = $01;  HUNFbm = $02;  // High Underflow Interrupt Enable
-    LCMP0idx = $04;  LCMP0bm = $10;  // Low Compare 0 Interrupt Enable
-    LCMP1idx = $05;  LCMP1bm = $20;  // Low Compare 1 Interrupt Enable
-    LCMP2idx = $06;  LCMP2bm = $40;  // Low Compare 2 Interrupt Enable
-    LUNFidx = $00;  LUNFbm = $01;  // Low Underflow Interrupt Enable
-  end;
-
-  TTCA = record //16-bit Timer/Counter Type A
-    case byte of
-      0: (SINGLE: TTCA_SINGLE);
-      1: (SPLIT: TTCA_SPLIT);
-    end;
-
-  TTCB = object //16-bit Timer Type B
-    CTRLA: byte;  //Control A
-    CTRLB: byte;  //Control Register B
-    Reserved2: byte;
-    Reserved3: byte;
-    EVCTRL: byte;  //Event Control
-    INTCTRL: byte;  //Interrupt Control
-    INTFLAGS: byte;  //Interrupt Flags
-    STATUS: byte;  //Status
-    DBGCTRL: byte;  //Debug Control
-    TEMP: byte;  //Temporary Value
-    CNT: word;  //Count
-    CCMP: word;  //Compare or Capture
-  const
-    CLKSEL0idx = $01;  // Clock Select
-    CLKSEL1idx = $02;  // Clock Select
-    ENABLEidx = $00;  ENABLEbm = $01;  // Enable
-    RUNSTDBYidx = $06;  RUNSTDBYbm = $40;  // Run Standby
-    SYNCUPDidx = $04;  SYNCUPDbm = $10;  // Synchronize Update
-    ASYNCidx = $06;  ASYNCbm = $40;  // Asynchronous Enable
-    CCMPENidx = $04;  CCMPENbm = $10;  // Pin Output Enable
-    CCMPINITidx = $05;  CCMPINITbm = $20;  // Pin Initial State
-    CNTMODE0idx = $00;  // Timer Mode
-    CNTMODE1idx = $01;  // Timer Mode
-    CNTMODE2idx = $02;  // Timer Mode
-    DBGRUNidx = $00;  DBGRUNbm = $01;  // Debug Run
-    CAPTEIidx = $00;  CAPTEIbm = $01;  // Event Input Enable
-    EDGEidx = $04;  EDGEbm = $10;  // Event Edge
-    FILTERidx = $06;  FILTERbm = $40;  // Input Capture Noise Cancellation Filter
-    CAPTidx = $00;  CAPTbm = $01;  // Capture or Timeout
-    RUNidx = $00;  RUNbm = $01;  // Run
-  end;
-
-  TTCD = object //Timer Counter D
-    CTRLA: byte;  //Control A
-    CTRLB: byte;  //Control B
-    CTRLC: byte;  //Control C
-    CTRLD: byte;  //Control D
-    CTRLE: byte;  //Control E
-    Reserved5: byte;
-    Reserved6: byte;
-    Reserved7: byte;
-    EVCTRLA: byte;  //EVCTRLA
-    EVCTRLB: byte;  //EVCTRLB
-    Reserved10: byte;
-    Reserved11: byte;
-    INTCTRL: byte;  //Interrupt Control
-    INTFLAGS: byte;  //Interrupt Flags
-    STATUS: byte;  //Status
-    Reserved15: byte;
-    INPUTCTRLA: byte;  //Input Control A
-    INPUTCTRLB: byte;  //Input Control B
-    FAULTCTRL: byte;  //Fault Control
-    Reserved19: byte;
-    DLYCTRL: byte;  //Delay Control
-    DLYVAL: byte;  //Delay value
-    Reserved22: byte;
-    Reserved23: byte;
-    DITCTRL: byte;  //Dither Control A
-    DITVAL: byte;  //Dither value
-    Reserved26: byte;
-    Reserved27: byte;
-    Reserved28: byte;
-    Reserved29: byte;
-    DBGCTRL: byte;  //Debug Control
-    Reserved31: byte;
-    Reserved32: byte;
-    Reserved33: byte;
-    CAPTUREA: word;  //Capture A
-    CAPTUREB: word;  //Capture B
-    Reserved38: byte;
-    Reserved39: byte;
-    CMPASET: word;  //Compare A Set
-    CMPACLR: word;  //Compare A Clear
-    CMPBSET: word;  //Compare B Set
-    CMPBCLR: word;  //Compare B Clear
-  const
-    CLKSEL0idx = $05;  // clock select
-    CLKSEL1idx = $06;  // clock select
-    CNTPRES0idx = $03;  // counter prescaler
-    CNTPRES1idx = $04;  // counter prescaler
-    ENABLEidx = $00;  ENABLEbm = $01;  // Enable
-    SYNCPRES0idx = $01;  // Syncronization prescaler
-    SYNCPRES1idx = $02;  // Syncronization prescaler
-    WGMODE0idx = $00;  // Waveform generation mode
-    WGMODE1idx = $01;  // Waveform generation mode
-    AUPDATEidx = $01;  AUPDATEbm = $02;  // Auto update
-    CMPCSELidx = $06;  CMPCSELbm = $40;  // Compare C output select
-    CMPDSELidx = $07;  CMPDSELbm = $80;  // Compare D output select
-    CMPOVRidx = $00;  CMPOVRbm = $01;  // Compare output value override
-    FIFTYidx = $03;  FIFTYbm = $08;  // Fifty percent waveform
-    CMPAVAL0idx = $00;  // Compare A value
-    CMPAVAL1idx = $01;  // Compare A value
-    CMPAVAL2idx = $02;  // Compare A value
-    CMPAVAL3idx = $03;  // Compare A value
-    CMPBVAL0idx = $04;  // Compare B value
-    CMPBVAL1idx = $05;  // Compare B value
-    CMPBVAL2idx = $06;  // Compare B value
-    CMPBVAL3idx = $07;  // Compare B value
-    DISEOCidx = $07;  DISEOCbm = $80;  // Disable at end of cycle
-    RESTARTidx = $02;  RESTARTbm = $04;  // Restart strobe
-    SCAPTUREAidx = $03;  SCAPTUREAbm = $08;  // Software Capture A Strobe
-    SCAPTUREBidx = $04;  SCAPTUREBbm = $10;  // Software Capture B Strobe
-    SYNCidx = $01;  SYNCbm = $02;  // synchronize strobe
-    SYNCEOCidx = $00;  SYNCEOCbm = $01;  // synchronize end of cycle strobe
-    DBGRUNidx = $00;  DBGRUNbm = $01;  // Debug run
-    FAULTDETidx = $02;  FAULTDETbm = $04;  // Fault detection
-    DITHERSEL0idx = $00;  // dither select
-    DITHERSEL1idx = $01;  // dither select
-    DITHER0idx = $00;  // Dither value
-    DITHER1idx = $01;  // Dither value
-    DITHER2idx = $02;  // Dither value
-    DITHER3idx = $03;  // Dither value
-    DLYPRESC0idx = $04;  // Delay prescaler
-    DLYPRESC1idx = $05;  // Delay prescaler
-    DLYSEL0idx = $00;  // Delay select
-    DLYSEL1idx = $01;  // Delay select
-    DLYTRIG0idx = $02;  // Delay trigger
-    DLYTRIG1idx = $03;  // Delay trigger
-    DLYVAL0idx = $00;  // Delay value
-    DLYVAL1idx = $01;  // Delay value
-    DLYVAL2idx = $02;  // Delay value
-    DLYVAL3idx = $03;  // Delay value
-    DLYVAL4idx = $04;  // Delay value
-    DLYVAL5idx = $05;  // Delay value
-    DLYVAL6idx = $06;  // Delay value
-    DLYVAL7idx = $07;  // Delay value
-    ACTIONidx = $02;  ACTIONbm = $04;  // event action
-    CFG0idx = $06;  // event config
-    CFG1idx = $07;  // event config
-    EDGEidx = $04;  EDGEbm = $10;  // edge select
-    TRIGEIidx = $00;  TRIGEIbm = $01;  // Trigger event enable
-    CMPAidx = $00;  CMPAbm = $01;  // Compare A value
-    CMPAENidx = $04;  CMPAENbm = $10;  // Compare A enable
-    CMPBidx = $01;  CMPBbm = $02;  // Compare B value
-    CMPBENidx = $05;  CMPBENbm = $20;  // Compare B enable
-    CMPCidx = $02;  CMPCbm = $04;  // Compare C value
-    CMPCENidx = $06;  CMPCENbm = $40;  // Compare C enable
-    CMPDidx = $03;  CMPDbm = $08;  // Compare D vaule
-    CMPDENidx = $07;  CMPDENbm = $80;  // Compare D enable
-    INPUTMODE0idx = $00;  // Input mode
-    INPUTMODE1idx = $01;  // Input mode
-    INPUTMODE2idx = $02;  // Input mode
-    INPUTMODE3idx = $03;  // Input mode
-    OVFidx = $00;  OVFbm = $01;  // Overflow interrupt enable
-    TRIGAidx = $02;  TRIGAbm = $04;  // Trigger A interrupt enable
-    TRIGBidx = $03;  TRIGBbm = $08;  // Trigger B interrupt enable
-    CMDRDYidx = $01;  CMDRDYbm = $02;  // Command ready
-    ENRDYidx = $00;  ENRDYbm = $01;  // Enable ready
-    PWMACTAidx = $06;  PWMACTAbm = $40;  // PWM activity on A
-    PWMACTBidx = $07;  PWMACTBbm = $80;  // PWM activity on B
-  end;
-
-  TTWI = object //Two-Wire Interface
-    CTRLA: byte;  //Control A
-    Reserved1: byte;
-    DBGCTRL: byte;  //Debug Control Register
-    MCTRLA: byte;  //Master Control A
-    MCTRLB: byte;  //Master Control B
-    MSTATUS: byte;  //Master Status
-    MBAUD: byte;  //Master Baurd Rate Control
-    MADDR: byte;  //Master Address
-    MDATA: byte;  //Master Data
-    SCTRLA: byte;  //Slave Control A
-    SCTRLB: byte;  //Slave Control B
-    SSTATUS: byte;  //Slave Status
-    SADDR: byte;  //Slave Address
-    SDATA: byte;  //Slave Data
-    SADDRMASK: byte;  //Slave Address Mask
-  const
-    ENABLEidx = $00;  ENABLEbm = $01;  // Enable TWI Master
-    QCENidx = $04;  QCENbm = $10;  // Quick Command Enable
-    RIENidx = $07;  RIENbm = $80;  // Read Interrupt Enable
-    SMENidx = $01;  SMENbm = $02;  // Smart Mode Enable
-    TIMEOUT0idx = $02;  // Inactive Bus Timeout
-    TIMEOUT1idx = $03;  // Inactive Bus Timeout
-    WIENidx = $06;  WIENbm = $40;  // Write Interrupt Enable
-    ACKACTidx = $02;  ACKACTbm = $04;  // Acknowledge Action
-    FLUSHidx = $03;  FLUSHbm = $08;  // Flush
-    MCMD0idx = $00;  // Command
-    MCMD1idx = $01;  // Command
-    ARBLOSTidx = $03;  ARBLOSTbm = $08;  // Arbitration Lost
-    BUSERRidx = $02;  BUSERRbm = $04;  // Bus Error
-    BUSSTATE0idx = $00;  // Bus State
-    BUSSTATE1idx = $01;  // Bus State
-    CLKHOLDidx = $05;  CLKHOLDbm = $20;  // Clock Hold
-    RIFidx = $07;  RIFbm = $80;  // Read Interrupt Flag
-    RXACKidx = $04;  RXACKbm = $10;  // Received Acknowledge
-    WIFidx = $06;  WIFbm = $40;  // Write Interrupt Flag
-    ADDRENidx = $00;  ADDRENbm = $01;  // Address Enable
-    ADDRMASK0idx = $01;  // Address Mask
-    ADDRMASK1idx = $02;  // Address Mask
-    ADDRMASK2idx = $03;  // Address Mask
-    ADDRMASK3idx = $04;  // Address Mask
-    ADDRMASK4idx = $05;  // Address Mask
-    ADDRMASK5idx = $06;  // Address Mask
-    ADDRMASK6idx = $07;  // Address Mask
-    APIENidx = $06;  APIENbm = $40;  // Address/Stop Interrupt Enable
-    DIENidx = $07;  DIENbm = $80;  // Data Interrupt Enable
-    PIENidx = $05;  PIENbm = $20;  // Stop Interrupt Enable
-    PMENidx = $02;  PMENbm = $04;  // Promiscuous Mode Enable
-    SCMD0idx = $00;  // Command
-    SCMD1idx = $01;  // Command
-    APidx = $00;  APbm = $01;  // Slave Address or Stop
-    APIFidx = $06;  APIFbm = $40;  // Address/Stop Interrupt Flag
-    COLLidx = $03;  COLLbm = $08;  // Collision
-    DIFidx = $07;  DIFbm = $80;  // Data Interrupt Flag
-    DIRidx = $01;  DIRbm = $02;  // Read/Write Direction
-  end;
-
-  TUSART = object //Universal Synchronous and Asynchronous Receiver and Transmitter
-    RXDATAL: byte;  //Receive Data Low Byte
-    RXDATAH: byte;  //Receive Data High Byte
-    TXDATAL: byte;  //Transmit Data Low Byte
-    TXDATAH: byte;  //Transmit Data High Byte
-    STATUS: byte;  //Status
-    CTRLA: byte;  //Control A
-    CTRLB: byte;  //Control B
-    CTRLC: byte;  //Control C
-    BAUD: word;  //Baud Rate
-    Reserved10: byte;
-    DBGCTRL: byte;  //Debug Control
-    EVCTRL: byte;  //Event Control
-    TXPLCTRL: byte;  //IRCOM Transmitter Pulse Length Control
-    RXPLCTRL: byte;  //IRCOM Receiver Pulse Length Control
-  const
-    ABEIEidx = $02;  ABEIEbm = $04;  // Auto-baud Error Interrupt Enable
-    DREIEidx = $05;  DREIEbm = $20;  // Data Register Empty Interrupt Enable
-    LBMEidx = $03;  LBMEbm = $08;  // Loop-back Mode Enable
-    RS4850idx = $00;  // RS485 Mode internal transmitter
-    RS4851idx = $01;  // RS485 Mode internal transmitter
-    RXCIEidx = $07;  RXCIEbm = $80;  // Receive Complete Interrupt Enable
-    RXSIEidx = $04;  RXSIEbm = $10;  // Receiver Start Frame Interrupt Enable
-    TXCIEidx = $06;  TXCIEbm = $40;  // Transmit Complete Interrupt Enable
-    MPCMidx = $00;  MPCMbm = $01;  // Multi-processor Communication Mode
-    ODMEidx = $03;  ODMEbm = $08;  // Open Drain Mode Enable
-    RXENidx = $07;  RXENbm = $80;  // Reciever enable
-    RXMODE0idx = $01;  // Receiver Mode
-    RXMODE1idx = $02;  // Receiver Mode
-    SFDENidx = $04;  SFDENbm = $10;  // Start Frame Detection Enable
-    TXENidx = $06;  TXENbm = $40;  // Transmitter Enable
-    ABMBPidx = $07;  ABMBPbm = $80;  // Autobaud majority voter bypass
-    DBGRUNidx = $00;  DBGRUNbm = $01;  // Debug Run
-    IREIidx = $00;  IREIbm = $01;  // IrDA Event Input Enable
-    BUFOVFidx = $06;  BUFOVFbm = $40;  // Buffer Overflow
-    DATA8idx = $00;  DATA8bm = $01;  // Receiver Data Register
-    FERRidx = $02;  FERRbm = $04;  // Frame Error
-    PERRidx = $01;  PERRbm = $02;  // Parity Error
-    RXCIFidx = $07;  RXCIFbm = $80;  // Receive Complete Interrupt Flag
-    DATA0idx = $00;  // RX Data
-    DATA1idx = $01;  // RX Data
-    DATA2idx = $02;  // RX Data
-    DATA3idx = $03;  // RX Data
-    DATA4idx = $04;  // RX Data
-    DATA5idx = $05;  // RX Data
-    DATA6idx = $06;  // RX Data
-    DATA7idx = $07;  // RX Data
-    RXPL0idx = $00;  // Receiver Pulse Lenght
-    RXPL1idx = $01;  // Receiver Pulse Lenght
-    RXPL2idx = $02;  // Receiver Pulse Lenght
-    RXPL3idx = $03;  // Receiver Pulse Lenght
-    RXPL4idx = $04;  // Receiver Pulse Lenght
-    RXPL5idx = $05;  // Receiver Pulse Lenght
-    RXPL6idx = $06;  // Receiver Pulse Lenght
-    BDFidx = $01;  BDFbm = $02;  // Break Detected Flag
-    DREIFidx = $05;  DREIFbm = $20;  // Data Register Empty Flag
-    ISFIFidx = $03;  ISFIFbm = $08;  // Inconsistent Sync Field Interrupt Flag
-    RXSIFidx = $04;  RXSIFbm = $10;  // Receive Start Interrupt
-    TXCIFidx = $06;  TXCIFbm = $40;  // Transmit Interrupt Flag
-    WFBidx = $00;  WFBbm = $01;  // Wait For Break
-    TXPL0idx = $00;  // Transmit pulse length
-    TXPL1idx = $01;  // Transmit pulse length
-    TXPL2idx = $02;  // Transmit pulse length
-    TXPL3idx = $03;  // Transmit pulse length
-    TXPL4idx = $04;  // Transmit pulse length
-    TXPL5idx = $05;  // Transmit pulse length
-    TXPL6idx = $06;  // Transmit pulse length
-    TXPL7idx = $07;  // Transmit pulse length
-  end;
-
-  TUSERROW = object //User Row
-    USERROW0: byte;  //User Row Byte 0
-    USERROW1: byte;  //User Row Byte 1
-    USERROW2: byte;  //User Row Byte 2
-    USERROW3: byte;  //User Row Byte 3
-    USERROW4: byte;  //User Row Byte 4
-    USERROW5: byte;  //User Row Byte 5
-    USERROW6: byte;  //User Row Byte 6
-    USERROW7: byte;  //User Row Byte 7
-    USERROW8: byte;  //User Row Byte 8
-    USERROW9: byte;  //User Row Byte 9
-    USERROW10: byte;  //User Row Byte 10
-    USERROW11: byte;  //User Row Byte 11
-    USERROW12: byte;  //User Row Byte 12
-    USERROW13: byte;  //User Row Byte 13
-    USERROW14: byte;  //User Row Byte 14
-    USERROW15: byte;  //User Row Byte 15
-    USERROW16: byte;  //User Row Byte 16
-    USERROW17: byte;  //User Row Byte 17
-    USERROW18: byte;  //User Row Byte 18
-    USERROW19: byte;  //User Row Byte 19
-    USERROW20: byte;  //User Row Byte 20
-    USERROW21: byte;  //User Row Byte 21
-    USERROW22: byte;  //User Row Byte 22
-    USERROW23: byte;  //User Row Byte 23
-    USERROW24: byte;  //User Row Byte 24
-    USERROW25: byte;  //User Row Byte 25
-    USERROW26: byte;  //User Row Byte 26
-    USERROW27: byte;  //User Row Byte 27
-    USERROW28: byte;  //User Row Byte 28
-    USERROW29: byte;  //User Row Byte 29
-    USERROW30: byte;  //User Row Byte 30
-    USERROW31: byte;  //User Row Byte 31
-    USERROW32: byte;  //User Row Byte 32
-    USERROW33: byte;  //User Row Byte 33
-    USERROW34: byte;  //User Row Byte 34
-    USERROW35: byte;  //User Row Byte 35
-    USERROW36: byte;  //User Row Byte 36
-    USERROW37: byte;  //User Row Byte 37
-    USERROW38: byte;  //User Row Byte 38
-    USERROW39: byte;  //User Row Byte 39
-    USERROW40: byte;  //User Row Byte 40
-    USERROW41: byte;  //User Row Byte 41
-    USERROW42: byte;  //User Row Byte 42
-    USERROW43: byte;  //User Row Byte 43
-    USERROW44: byte;  //User Row Byte 44
-    USERROW45: byte;  //User Row Byte 45
-    USERROW46: byte;  //User Row Byte 46
-    USERROW47: byte;  //User Row Byte 47
-    USERROW48: byte;  //User Row Byte 48
-    USERROW49: byte;  //User Row Byte 49
-    USERROW50: byte;  //User Row Byte 50
-    USERROW51: byte;  //User Row Byte 51
-    USERROW52: byte;  //User Row Byte 52
-    USERROW53: byte;  //User Row Byte 53
-    USERROW54: byte;  //User Row Byte 54
-    USERROW55: byte;  //User Row Byte 55
-    USERROW56: byte;  //User Row Byte 56
-    USERROW57: byte;  //User Row Byte 57
-    USERROW58: byte;  //User Row Byte 58
-    USERROW59: byte;  //User Row Byte 59
-    USERROW60: byte;  //User Row Byte 60
-    USERROW61: byte;  //User Row Byte 61
-    USERROW62: byte;  //User Row Byte 62
-    USERROW63: byte;  //User Row Byte 63
-  end;
-
-  TVPORT = object //Virtual Ports
-    DIR: byte;  //Data Direction
-    OUT_: byte;  //Output Value
-    IN_: byte;  //Input Value
-    INTFLAGS: byte;  //Interrupt Flags
-  const
-    INT0idx = $00;  // Pin Interrupt
-    INT1idx = $01;  // Pin Interrupt
-    INT2idx = $02;  // Pin Interrupt
-    INT3idx = $03;  // Pin Interrupt
-    INT4idx = $04;  // Pin Interrupt
-    INT5idx = $05;  // Pin Interrupt
-    INT6idx = $06;  // Pin Interrupt
-    INT7idx = $07;  // Pin Interrupt
-  end;
-
-  TVREF = object //Voltage reference
-    CTRLA: byte;  //Control A
-    CTRLB: byte;  //Control B
-    CTRLC: byte;  //Control C
-    CTRLD: byte;  //Control D
-  const
-    ADC0REFSEL0idx = $04;  // ADC0 reference select
-    ADC0REFSEL1idx = $05;  // ADC0 reference select
-    ADC0REFSEL2idx = $06;  // ADC0 reference select
-    DAC0REFSEL0idx = $00;  // DAC0/AC0 reference select
-    DAC0REFSEL1idx = $01;  // DAC0/AC0 reference select
-    DAC0REFSEL2idx = $02;  // DAC0/AC0 reference select
-    ADC0REFENidx = $01;  ADC0REFENbm = $02;  // ADC0 reference enable
-    ADC1REFENidx = $04;  ADC1REFENbm = $10;  // ADC1 reference enable
-    DAC0REFENidx = $00;  DAC0REFENbm = $01;  // DAC0/AC0 reference enable
-    DAC1REFENidx = $03;  DAC1REFENbm = $08;  // DAC1/AC1 reference enable
-    DAC2REFENidx = $05;  DAC2REFENbm = $20;  // DAC2/AC2 reference enable
-    ADC1REFSEL0idx = $04;  // ADC1 reference select
-    ADC1REFSEL1idx = $05;  // ADC1 reference select
-    ADC1REFSEL2idx = $06;  // ADC1 reference select
-    DAC1REFSEL0idx = $00;  // DAC1/AC1 reference select
-    DAC1REFSEL1idx = $01;  // DAC1/AC1 reference select
-    DAC1REFSEL2idx = $02;  // DAC1/AC1 reference select
-    DAC2REFSEL0idx = $00;  // DAC2/AC2 reference select
-    DAC2REFSEL1idx = $01;  // DAC2/AC2 reference select
-    DAC2REFSEL2idx = $02;  // DAC2/AC2 reference select
-  end;
-
-  TWDT = object //Watch-Dog Timer
-    CTRLA: byte;  //Control A
-    STATUS: byte;  //Status
-  const
-    PERIOD0idx = $00;  // Period
-    PERIOD1idx = $01;  // Period
-    PERIOD2idx = $02;  // Period
-    PERIOD3idx = $03;  // Period
-    WINDOW0idx = $04;  // Window
-    WINDOW1idx = $05;  // Window
-    WINDOW2idx = $06;  // Window
-    WINDOW3idx = $07;  // Window
-    LOCKidx = $07;  LOCKbm = $80;  // Lock enable
-    SYNCBUSYidx = $00;  SYNCBUSYbm = $01;  // Syncronization busy
-  end;
-
-
-const
- Pin0idx = 0;  Pin0bm = 1;
- Pin1idx = 1;  Pin1bm = 2;
- Pin2idx = 2;  Pin2bm = 4;
- Pin3idx = 3;  Pin3bm = 8;
- Pin4idx = 4;  Pin4bm = 16;
- Pin5idx = 5;  Pin5bm = 32;
- Pin6idx = 6;  Pin6bm = 64;
- Pin7idx = 7;  Pin7bm = 128;
-
-var
-  VPORTA: TVPORT absolute $0000;
-  VPORTB: TVPORT absolute $0004;
-  VPORTC: TVPORT absolute $0008;
-  GPIO: TGPIO absolute $001C;
-  CPU: TCPU absolute $0030;
-  RSTCTRL: TRSTCTRL absolute $0040;
-  SLPCTRL: TSLPCTRL absolute $0050;
-  CLKCTRL: TCLKCTRL absolute $0060;
-  BOD: TBOD absolute $0080;
-  VREF: TVREF absolute $00A0;
-  WDT: TWDT absolute $0100;
-  CPUINT: TCPUINT absolute $0110;
-  CRCSCAN: TCRCSCAN absolute $0120;
-  RTC: TRTC absolute $0140;
-  EVSYS: TEVSYS absolute $0180;
-  CCL: TCCL absolute $01C0;
-  PORTMUX: TPORTMUX absolute $0200;
-  PORTA: TPORT absolute $0400;
-  PORTB: TPORT absolute $0420;
-  PORTC: TPORT absolute $0440;
-  ADC0: TADC absolute $0600;
-  ADC1: TADC absolute $0640;
-  AC0: TAC absolute $0680;
-  AC1: TAC absolute $0688;
-  AC2: TAC absolute $0690;
-  DAC0: TDAC absolute $06A0;
-  DAC1: TDAC absolute $06A8;
-  DAC2: TDAC absolute $06B0;
-  USART0: TUSART absolute $0800;
-  TWI0: TTWI absolute $0810;
-  SPI0: TSPI absolute $0820;
-  TCA0: TTCA absolute $0A00;
-  TCB0: TTCB absolute $0A40;
-  TCB1: TTCB absolute $0A50;
-  TCD0: TTCD absolute $0A80;
-  SYSCFG: TSYSCFG absolute $0F00;
-  NVMCTRL: TNVMCTRL absolute $1000;
-  SIGROW: TSIGROW absolute $1100;
-  FUSE: TFUSE absolute $1280;
-  LOCKBIT: TLOCKBIT absolute $128A;
-  USERROW: TUSERROW absolute $1300;
-
-implementation
-
-{$i avrcommon.inc}
-
-procedure CRCSCAN_NMI_ISR; external name 'CRCSCAN_NMI_ISR'; // Interrupt 1 
-procedure BOD_VLM_ISR; external name 'BOD_VLM_ISR'; // Interrupt 2 
-procedure PORTA_PORT_ISR; external name 'PORTA_PORT_ISR'; // Interrupt 3 
-procedure PORTB_PORT_ISR; external name 'PORTB_PORT_ISR'; // Interrupt 4 
-procedure PORTC_PORT_ISR; external name 'PORTC_PORT_ISR'; // Interrupt 5 
-procedure RTC_CNT_ISR; external name 'RTC_CNT_ISR'; // Interrupt 6 
-procedure RTC_PIT_ISR; external name 'RTC_PIT_ISR'; // Interrupt 7 
-procedure TCA0_OVF_ISR; external name 'TCA0_OVF_ISR'; // Interrupt 8 
-//procedure TCA0_LUNF_ISR; external name 'TCA0_LUNF_ISR'; // Interrupt 8 
-procedure TCA0_HUNF_ISR; external name 'TCA0_HUNF_ISR'; // Interrupt 9 
-procedure TCA0_CMP0_ISR; external name 'TCA0_CMP0_ISR'; // Interrupt 10 
-//procedure TCA0_LCMP0_ISR; external name 'TCA0_LCMP0_ISR'; // Interrupt 10 
-procedure TCA0_LCMP1_ISR; external name 'TCA0_LCMP1_ISR'; // Interrupt 11 
-//procedure TCA0_CMP1_ISR; external name 'TCA0_CMP1_ISR'; // Interrupt 11 
-procedure TCA0_CMP2_ISR; external name 'TCA0_CMP2_ISR'; // Interrupt 12 
-//procedure TCA0_LCMP2_ISR; external name 'TCA0_LCMP2_ISR'; // Interrupt 12 
-procedure TCB0_INT_ISR; external name 'TCB0_INT_ISR'; // Interrupt 13 
-procedure TCB1_INT_ISR; external name 'TCB1_INT_ISR'; // Interrupt 14 
-procedure TCD0_OVF_ISR; external name 'TCD0_OVF_ISR'; // Interrupt 15 
-procedure TCD0_TRIG_ISR; external name 'TCD0_TRIG_ISR'; // Interrupt 16 
-procedure AC0_AC_ISR; external name 'AC0_AC_ISR'; // Interrupt 17 
-procedure AC1_AC_ISR; external name 'AC1_AC_ISR'; // Interrupt 18 
-procedure AC2_AC_ISR; external name 'AC2_AC_ISR'; // Interrupt 19 
-procedure ADC0_RESRDY_ISR; external name 'ADC0_RESRDY_ISR'; // Interrupt 20 
-procedure ADC0_WCOMP_ISR; external name 'ADC0_WCOMP_ISR'; // Interrupt 21 
-procedure ADC1_RESRDY_ISR; external name 'ADC1_RESRDY_ISR'; // Interrupt 22 
-procedure ADC1_WCOMP_ISR; external name 'ADC1_WCOMP_ISR'; // Interrupt 23 
-procedure TWI0_TWIS_ISR; external name 'TWI0_TWIS_ISR'; // Interrupt 24 
-procedure TWI0_TWIM_ISR; external name 'TWI0_TWIM_ISR'; // Interrupt 25 
-procedure SPI0_INT_ISR; external name 'SPI0_INT_ISR'; // Interrupt 26 
-procedure USART0_RXC_ISR; external name 'USART0_RXC_ISR'; // Interrupt 27 
-procedure USART0_DRE_ISR; external name 'USART0_DRE_ISR'; // Interrupt 28 
-procedure USART0_TXC_ISR; external name 'USART0_TXC_ISR'; // Interrupt 29 
-procedure NVMCTRL_EE_ISR; external name 'NVMCTRL_EE_ISR'; // Interrupt 30 
-
-procedure _FPC_start; assembler; nostackframe; noreturn; public name '_START'; section '.init';
- asm
-  jmp __dtors_end
-  jmp CRCSCAN_NMI_ISR
-  jmp BOD_VLM_ISR
-  jmp PORTA_PORT_ISR
-  jmp PORTB_PORT_ISR
-  jmp PORTC_PORT_ISR
-  jmp RTC_CNT_ISR
-  jmp RTC_PIT_ISR
-  jmp TCA0_OVF_ISR
-//  jmp TCA0_LUNF_ISR
-  jmp TCA0_HUNF_ISR
-  jmp TCA0_CMP0_ISR
-//  jmp TCA0_LCMP0_ISR
-  jmp TCA0_LCMP1_ISR
-//  jmp TCA0_CMP1_ISR
-  jmp TCA0_CMP2_ISR
-//  jmp TCA0_LCMP2_ISR
-  jmp TCB0_INT_ISR
-  jmp TCB1_INT_ISR
-  jmp TCD0_OVF_ISR
-  jmp TCD0_TRIG_ISR
-  jmp AC0_AC_ISR
-  jmp AC1_AC_ISR
-  jmp AC2_AC_ISR
-  jmp ADC0_RESRDY_ISR
-  jmp ADC0_WCOMP_ISR
-  jmp ADC1_RESRDY_ISR
-  jmp ADC1_WCOMP_ISR
-  jmp TWI0_TWIS_ISR
-  jmp TWI0_TWIM_ISR
-  jmp SPI0_INT_ISR
-  jmp USART0_RXC_ISR
-  jmp USART0_DRE_ISR
-  jmp USART0_TXC_ISR
-  jmp NVMCTRL_EE_ISR
-
-  .weak CRCSCAN_NMI_ISR
-  .weak BOD_VLM_ISR
-  .weak PORTA_PORT_ISR
-  .weak PORTB_PORT_ISR
-  .weak PORTC_PORT_ISR
-  .weak RTC_CNT_ISR
-  .weak RTC_PIT_ISR
-  .weak TCA0_OVF_ISR
-//  .weak TCA0_LUNF_ISR
-  .weak TCA0_HUNF_ISR
-  .weak TCA0_CMP0_ISR
-//  .weak TCA0_LCMP0_ISR
-  .weak TCA0_LCMP1_ISR
-//  .weak TCA0_CMP1_ISR
-  .weak TCA0_CMP2_ISR
-//  .weak TCA0_LCMP2_ISR
-  .weak TCB0_INT_ISR
-  .weak TCB1_INT_ISR
-  .weak TCD0_OVF_ISR
-  .weak TCD0_TRIG_ISR
-  .weak AC0_AC_ISR
-  .weak AC1_AC_ISR
-  .weak AC2_AC_ISR
-  .weak ADC0_RESRDY_ISR
-  .weak ADC0_WCOMP_ISR
-  .weak ADC1_RESRDY_ISR
-  .weak ADC1_WCOMP_ISR
-  .weak TWI0_TWIS_ISR
-  .weak TWI0_TWIM_ISR
-  .weak SPI0_INT_ISR
-  .weak USART0_RXC_ISR
-  .weak USART0_DRE_ISR
-  .weak USART0_TXC_ISR
-  .weak NVMCTRL_EE_ISR
-
-  .set CRCSCAN_NMI_ISR, Default_IRQ_handler
-  .set BOD_VLM_ISR, Default_IRQ_handler
-  .set PORTA_PORT_ISR, Default_IRQ_handler
-  .set PORTB_PORT_ISR, Default_IRQ_handler
-  .set PORTC_PORT_ISR, Default_IRQ_handler
-  .set RTC_CNT_ISR, Default_IRQ_handler
-  .set RTC_PIT_ISR, Default_IRQ_handler
-  .set TCA0_OVF_ISR, Default_IRQ_handler
-//  .set TCA0_LUNF_ISR, Default_IRQ_handler
-  .set TCA0_HUNF_ISR, Default_IRQ_handler
-  .set TCA0_CMP0_ISR, Default_IRQ_handler
-//  .set TCA0_LCMP0_ISR, Default_IRQ_handler
-  .set TCA0_LCMP1_ISR, Default_IRQ_handler
-//  .set TCA0_CMP1_ISR, Default_IRQ_handler
-  .set TCA0_CMP2_ISR, Default_IRQ_handler
-//  .set TCA0_LCMP2_ISR, Default_IRQ_handler
-  .set TCB0_INT_ISR, Default_IRQ_handler
-  .set TCB1_INT_ISR, Default_IRQ_handler
-  .set TCD0_OVF_ISR, Default_IRQ_handler
-  .set TCD0_TRIG_ISR, Default_IRQ_handler
-  .set AC0_AC_ISR, Default_IRQ_handler
-  .set AC1_AC_ISR, Default_IRQ_handler
-  .set AC2_AC_ISR, Default_IRQ_handler
-  .set ADC0_RESRDY_ISR, Default_IRQ_handler
-  .set ADC0_WCOMP_ISR, Default_IRQ_handler
-  .set ADC1_RESRDY_ISR, Default_IRQ_handler
-  .set ADC1_WCOMP_ISR, Default_IRQ_handler
-  .set TWI0_TWIS_ISR, Default_IRQ_handler
-  .set TWI0_TWIM_ISR, Default_IRQ_handler
-  .set SPI0_INT_ISR, Default_IRQ_handler
-  .set USART0_RXC_ISR, Default_IRQ_handler
-  .set USART0_DRE_ISR, Default_IRQ_handler
-  .set USART0_TXC_ISR, Default_IRQ_handler
-  .set NVMCTRL_EE_ISR, Default_IRQ_handler
-end;
-
-end.