<?xml version="1.0"?>
<!-- edited with XMLSpy v2006 U (http://www.altova.com) by George Pauley (Microchip Inc.) -->
<!-- PICkit 2 tool specific schema -->
<!-- Microchip Technology Inc. -->
<xs:schema xmlns:pk2="http://microchip.com/pk2" xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="http://microchip.com/pk2">
	<!-- -->
	<!-- Types -->
	<!-- -->
	<!-- hex8 -->
	<xs:simpleType name="hex8">
		<xs:annotation>
			<xs:documentation>
			A 8 bit hexidecimal value, w or w/o the 0x prefix
			</xs:documentation>
		</xs:annotation>
		<xs:restriction base="xs:string">
			<xs:pattern value="0[Xx][0-9A-Fa-f]{1,2}"/>
		</xs:restriction>
	</xs:simpleType>
	<!-- hex16 -->
	<xs:simpleType name="hex16">
		<xs:annotation>
			<xs:documentation>
			A 16 bit hexidecimal value, w or w/o the 0x prefix
			</xs:documentation>
		</xs:annotation>
		<xs:restriction base="xs:string">
			<xs:pattern value="0[Xx][0-9A-Fa-f]{1,4}"/>
		</xs:restriction>
	</xs:simpleType>
	<!-- hex32 -->
	<xs:simpleType name="hex32">
		<xs:annotation>
			<xs:documentation>
			A 16 bit hexidecimal value, w or w/o the 0x prefix
			</xs:documentation>
		</xs:annotation>
		<xs:restriction base="xs:string">
			<xs:pattern value="0[Xx][0-9A-Fa-f]{1,8}"/>
		</xs:restriction>
	</xs:simpleType>
	<!-- Part ID -->
	<xs:simpleType name="partid">
		<xs:annotation>
			<xs:documentation>
			An enumeration of all the parts we support
			Basically an extra check to make sure all part ids are well formed
			</xs:documentation>
		</xs:annotation>
		<xs:restriction base="xs:token">
			<xs:enumeration value="PIC10F200"/>
			<xs:enumeration value="PIC10F202"/>
			<xs:enumeration value="PIC10F204"/>
			<xs:enumeration value="PIC10F206"/>
			<xs:enumeration value="PIC10F220"/>
			<xs:enumeration value="PIC10F222"/>
			<xs:enumeration value="PIC12F508"/>
			<xs:enumeration value="PIC12F509"/>
			<xs:enumeration value="PIC12F510"/>
			<xs:enumeration value="PIC12F609"/>
			<xs:enumeration value="PIC12HV609"/>
			<xs:enumeration value="PIC12F615"/>
			<xs:enumeration value="PIC12HV615"/>
			<xs:enumeration value="PIC12F629"/>
			<xs:enumeration value="PIC12F635"/>
			<xs:enumeration value="PIC12F675"/>
			<xs:enumeration value="PIC12F683"/>
			<xs:enumeration value="PIC16F505"/>
			<xs:enumeration value="PIC16F506"/>
			<xs:enumeration value="PIC16F610"/>
			<xs:enumeration value="PIC16HV610"/>
			<xs:enumeration value="PIC16F616"/>
			<xs:enumeration value="PIC16HV616"/>
			<xs:enumeration value="PIC16F627A"/>
			<xs:enumeration value="PIC16F628A"/>
			<xs:enumeration value="PIC16F630"/>
			<xs:enumeration value="PIC16F631"/>
			<xs:enumeration value="PIC16F636"/>
			<xs:enumeration value="PIC16F639"/>
			<xs:enumeration value="PIC16F648A"/>
			<xs:enumeration value="PIC16F676"/>
			<xs:enumeration value="PIC16F677"/>
			<xs:enumeration value="PIC16F684"/>
			<xs:enumeration value="PIC16F685"/>
			<xs:enumeration value="PIC16F687"/>
			<xs:enumeration value="PIC16F688"/>
			<xs:enumeration value="PIC16F689"/>
			<xs:enumeration value="PIC16F690"/>
			<xs:enumeration value="PIC16F716"/>
			<xs:enumeration value="PIC16F722"/>
			<xs:enumeration value="PIC16LF722"/>
			<xs:enumeration value="PIC16F723"/>
			<xs:enumeration value="PIC16LF723"/>
			<xs:enumeration value="PIC16F724"/>
			<xs:enumeration value="PIC16LF724"/>
			<xs:enumeration value="PIC16F726"/>
			<xs:enumeration value="PIC16LF726"/>
			<xs:enumeration value="PIC16F727"/>
			<xs:enumeration value="PIC16LF727"/>
			<xs:enumeration value="PIC16F737"/>
			<xs:enumeration value="PIC16F747"/>
			<xs:enumeration value="PIC16F767"/>
			<xs:enumeration value="PIC16F777"/>
			<xs:enumeration value="PIC16F785"/>
			<xs:enumeration value="PIC16HV785"/>
			<xs:enumeration value="PIC16F87"/>
			<xs:enumeration value="PIC16F88"/>
			<xs:enumeration value="PIC16F818"/>
			<xs:enumeration value="PIC16F819"/>
			<xs:enumeration value="PIC16F870"/>
			<xs:enumeration value="PIC16F871"/>
			<xs:enumeration value="PIC16F872"/>
			<xs:enumeration value="PIC16F873"/>
			<xs:enumeration value="PIC16F873A"/>
			<xs:enumeration value="PIC16F874"/>
			<xs:enumeration value="PIC16F874A"/>
			<xs:enumeration value="PIC16F876"/>
			<xs:enumeration value="PIC16F876A"/>
			<xs:enumeration value="PIC16F877"/>
			<xs:enumeration value="PIC16F877A"/>
			<xs:enumeration value="PIC16F882"/>
			<xs:enumeration value="PIC16F883"/>
			<xs:enumeration value="PIC16F884"/>
			<xs:enumeration value="PIC16F886"/>
			<xs:enumeration value="PIC16F887"/>
			<xs:enumeration value="PIC16F913"/>
			<xs:enumeration value="PIC16F914"/>
			<xs:enumeration value="PIC16F916"/>
			<xs:enumeration value="PIC16F917"/>
			<xs:enumeration value="PIC16F946"/>
			<xs:enumeration value="PIC18F1220"/>
			<xs:enumeration value="PIC18F1230"/>
			<xs:enumeration value="PIC18F1320"/>
			<xs:enumeration value="PIC18F1330"/>
			<xs:enumeration value="PIC18F2220"/>
			<xs:enumeration value="PIC18F2221"/>
			<xs:enumeration value="PIC18F2320"/>
			<xs:enumeration value="PIC18F2321"/>
			<xs:enumeration value="PIC18F2331"/>
			<xs:enumeration value="PIC18F2410"/>
			<xs:enumeration value="PIC18F242"/>
			<xs:enumeration value="PIC18F2420"/>
			<xs:enumeration value="PIC18F2423"/>
			<xs:enumeration value="PIC18F2431"/>
			<xs:enumeration value="PIC18F2450"/>
			<xs:enumeration value="PIC18F2455"/>
			<xs:enumeration value="PIC18F2458"/>
			<xs:enumeration value="PIC18F248"/>
			<xs:enumeration value="PIC18F2480"/>
			<xs:enumeration value="PIC18F2510"/>
			<xs:enumeration value="PIC18F2515"/>
			<xs:enumeration value="PIC18F252"/>
			<xs:enumeration value="PIC18F2520"/>
			<xs:enumeration value="PIC18F2523"/>
			<xs:enumeration value="PIC18F2525"/>
			<xs:enumeration value="PIC18F2550"/>
			<xs:enumeration value="PIC18F2553"/>
			<xs:enumeration value="PIC18F258"/>
			<xs:enumeration value="PIC18F2580"/>
			<xs:enumeration value="PIC18F2585"/>
			<xs:enumeration value="PIC18F2610"/>
			<xs:enumeration value="PIC18F2620"/>
			<xs:enumeration value="PIC18F2680"/>
			<xs:enumeration value="PIC18F2682"/>
			<xs:enumeration value="PIC18F2685"/>
			<xs:enumeration value="PIC18F4220"/>
			<xs:enumeration value="PIC18F4221"/>
			<xs:enumeration value="PIC18F4320"/>
			<xs:enumeration value="PIC18F4321"/>
			<xs:enumeration value="PIC18F4331"/>
			<xs:enumeration value="PIC18F4410"/>
			<xs:enumeration value="PIC18F442"/>
			<xs:enumeration value="PIC18F4420"/>
			<xs:enumeration value="PIC18F4423"/>
			<xs:enumeration value="PIC18F4431"/>
			<xs:enumeration value="PIC18F4450"/>
			<xs:enumeration value="PIC18F4455"/>
			<xs:enumeration value="PIC18F4458"/>
			<xs:enumeration value="PIC18F448"/>
			<xs:enumeration value="PIC18F4480"/>
			<xs:enumeration value="PIC18F4510"/>
			<xs:enumeration value="PIC18F4515"/>
			<xs:enumeration value="PIC18F452"/>
			<xs:enumeration value="PIC18F4520"/>
			<xs:enumeration value="PIC18F4523"/>
			<xs:enumeration value="PIC18F4525"/>
			<xs:enumeration value="PIC18F4550"/>
			<xs:enumeration value="PIC18F4553"/>
			<xs:enumeration value="PIC18F458"/>
			<xs:enumeration value="PIC18F4580"/>
			<xs:enumeration value="PIC18F4585"/>
			<xs:enumeration value="PIC18F4610"/>
			<xs:enumeration value="PIC18F4620"/>
			<xs:enumeration value="PIC18F4680"/>
			<xs:enumeration value="PIC18F4682"/>
			<xs:enumeration value="PIC18F4685"/>
			<xs:enumeration value="PIC18F6310"/>
			<xs:enumeration value="PIC18F6390"/>
			<xs:enumeration value="PIC18F6393"/>
			<xs:enumeration value="PIC18F6410"/>
			<xs:enumeration value="PIC18F6490"/>
			<xs:enumeration value="PIC18F6493"/>
			<xs:enumeration value="PIC18F6520"/>
			<xs:enumeration value="PIC18F6525"/>
			<xs:enumeration value="PIC18F6527"/>
			<xs:enumeration value="PIC18F6585"/>
			<xs:enumeration value="PIC18F6620"/>
			<xs:enumeration value="PIC18F6621"/>
			<xs:enumeration value="PIC18F6622"/>
			<xs:enumeration value="PIC18F6627"/>
			<xs:enumeration value="PIC18F6628"/>
			<xs:enumeration value="PIC18F6680"/>
			<xs:enumeration value="PIC18F6720"/>
			<xs:enumeration value="PIC18F6722"/>
			<xs:enumeration value="PIC18F6723"/>
			<xs:enumeration value="PIC18F8310"/>
			<xs:enumeration value="PIC18F8390"/>
			<xs:enumeration value="PIC18F8393"/>
			<xs:enumeration value="PIC18F8410"/>
			<xs:enumeration value="PIC18F8490"/>
			<xs:enumeration value="PIC18F8493"/>
			<xs:enumeration value="PIC18F8520"/>
			<xs:enumeration value="PIC18F8525"/>
			<xs:enumeration value="PIC18F8527"/>
			<xs:enumeration value="PIC18F8585"/>
			<xs:enumeration value="PIC18F8620"/>
			<xs:enumeration value="PIC18F8621"/>
			<xs:enumeration value="PIC18F8622"/>
			<xs:enumeration value="PIC18F8627"/>
			<xs:enumeration value="PIC18F8628"/>
			<xs:enumeration value="PIC18F8680"/>
			<xs:enumeration value="PIC18F8720"/>
			<xs:enumeration value="PIC18F8722"/>
			<xs:enumeration value="PIC18F8723"/>
			<xs:enumeration value="PIC18F24J10"/>
			<xs:enumeration value="PIC18LF24J10"/>
			<xs:enumeration value="PIC18F24J11"/>
			<xs:enumeration value="PIC18LF24J11"/>
			<xs:enumeration value="PIC18F24J50"/>
			<xs:enumeration value="PIC18LF24J50"/>
			<xs:enumeration value="PIC18F25J10"/>
			<xs:enumeration value="PIC18LF25J10"/>
			<xs:enumeration value="PIC18F25J11"/>
			<xs:enumeration value="PIC18LF25J11"/>
			<xs:enumeration value="PIC18F25J50"/>
			<xs:enumeration value="PIC18LF25J50"/>
			<xs:enumeration value="PIC18F26J11"/>
			<xs:enumeration value="PIC18LF26J11"/>
			<xs:enumeration value="PIC18F26J50"/>
			<xs:enumeration value="PIC18LF26J50"/>
			<xs:enumeration value="PIC18F44J10"/>
			<xs:enumeration value="PIC18LF44J10"/>
			<xs:enumeration value="PIC18F44J11"/>
			<xs:enumeration value="PIC18LF44J11"/>
			<xs:enumeration value="PIC18F44J50"/>
			<xs:enumeration value="PIC18LF44J50"/>
			<xs:enumeration value="PIC18F45J10"/>
			<xs:enumeration value="PIC18LF45J10"/>
			<xs:enumeration value="PIC18F45J11"/>
			<xs:enumeration value="PIC18LF45J11"/>
			<xs:enumeration value="PIC18F45J50"/>
			<xs:enumeration value="PIC18LF45J50"/>
			<xs:enumeration value="PIC18F46J11"/>
			<xs:enumeration value="PIC18LF46J11"/>
			<xs:enumeration value="PIC18F46J50"/>
			<xs:enumeration value="PIC18LF46J50"/>
			<xs:enumeration value="PIC18F63J11"/>
			<xs:enumeration value="PIC18F63J90"/>
			<xs:enumeration value="PIC18F64J11"/>
			<xs:enumeration value="PIC18F64J90"/>
			<xs:enumeration value="PIC18F65J10"/>
			<xs:enumeration value="PIC18F65J11"/>
			<xs:enumeration value="PIC18F65J15"/>
			<xs:enumeration value="PIC18F65J50"/>
			<xs:enumeration value="PIC18F65J90"/>
			<xs:enumeration value="PIC18F66J10"/>
			<xs:enumeration value="PIC18F66J11"/>
			<xs:enumeration value="PIC18F66J15"/>
			<xs:enumeration value="PIC18F66J16"/>
			<xs:enumeration value="PIC18F66J50"/>
			<xs:enumeration value="PIC18F66J55"/>
			<xs:enumeration value="PIC18F66J60"/>
			<xs:enumeration value="PIC18F66J65"/>
			<xs:enumeration value="PIC18F66J90"/>
			<xs:enumeration value="PIC18F67J10"/>
			<xs:enumeration value="PIC18F67J11"/>
			<xs:enumeration value="PIC18F67J50"/>
			<xs:enumeration value="PIC18F67J60"/>
			<xs:enumeration value="PIC18F67J90"/>
			<xs:enumeration value="PIC18F83J11"/>
			<xs:enumeration value="PIC18F83J90"/>
			<xs:enumeration value="PIC18F84J11"/>
			<xs:enumeration value="PIC18F84J90"/>
			<xs:enumeration value="PIC18F85J10"/>
			<xs:enumeration value="PIC18F85J11"/>
			<xs:enumeration value="PIC18F85J15"/>
			<xs:enumeration value="PIC18F85J50"/>
			<xs:enumeration value="PIC18F85J90"/>
			<xs:enumeration value="PIC18F86J10"/>
			<xs:enumeration value="PIC18F86J11"/>
			<xs:enumeration value="PIC18F86J15"/>
			<xs:enumeration value="PIC18F86J16"/>
			<xs:enumeration value="PIC18F86J50"/>
			<xs:enumeration value="PIC18F86J55"/>
			<xs:enumeration value="PIC18F86J60"/>
			<xs:enumeration value="PIC18F86J65"/>
			<xs:enumeration value="PIC18F86J90"/>
			<xs:enumeration value="PIC18F87J10"/>
			<xs:enumeration value="PIC18F87J11"/>
			<xs:enumeration value="PIC18F87J50"/>
			<xs:enumeration value="PIC18F87J60"/>
			<xs:enumeration value="PIC18F87J90"/>
			<xs:enumeration value="PIC18F96J60"/>
			<xs:enumeration value="PIC18F96J65"/>
			<xs:enumeration value="PIC18F97J60"/>
			<xs:enumeration value="PIC18F13K50"/>
			<xs:enumeration value="PIC18LF13K50"/>
			<xs:enumeration value="PIC18F14K22"/>
			<xs:enumeration value="PIC18LF14K22"/>
			<xs:enumeration value="PIC18F14K50"/>
			<xs:enumeration value="PIC18LF14K50"/>
			<xs:enumeration value="PIC18F24K20"/>
			<xs:enumeration value="PIC18F25K20"/>
			<xs:enumeration value="PIC18F26K20"/>
			<xs:enumeration value="PIC18F44K20"/>
			<xs:enumeration value="PIC18F45K20"/>
			<xs:enumeration value="PIC18F46K20"/>
			<xs:enumeration value="PIC24F08KA101"/>
			<xs:enumeration value="PIC24F08KA102"/>
			<xs:enumeration value="PIC24F16KA101"/>
			<xs:enumeration value="PIC24F16KA102"/>
			<xs:enumeration value="PIC24FJ16GA002"/>
			<xs:enumeration value="PIC24FJ16GA004"/>
			<xs:enumeration value="PIC24FJ32GA002"/>
			<xs:enumeration value="PIC24FJ32GA004"/>
			<xs:enumeration value="PIC24FJ48GA002"/>
			<xs:enumeration value="PIC24FJ48GA004"/>
			<xs:enumeration value="PIC24FJ64GA002"/>
			<xs:enumeration value="PIC24FJ64GA004"/>
			<xs:enumeration value="PIC24FJ64GA006"/>
			<xs:enumeration value="PIC24FJ64GA008"/>
			<xs:enumeration value="PIC24FJ64GA010"/>
			<xs:enumeration value="PIC24FJ96GA006"/>
			<xs:enumeration value="PIC24FJ96GA008"/>
			<xs:enumeration value="PIC24FJ96GA010"/>
			<xs:enumeration value="PIC24FJ128GA006"/>
			<xs:enumeration value="PIC24FJ128GA008"/>
			<xs:enumeration value="PIC24FJ128GA010"/>
			<xs:enumeration value="PIC24FJ128GA106"/>
			<xs:enumeration value="PIC24FJ128GA108"/>
			<xs:enumeration value="PIC24FJ128GA110"/>
			<xs:enumeration value="PIC24FJ192GA106"/>
			<xs:enumeration value="PIC24FJ192GA108"/>
			<xs:enumeration value="PIC24FJ192GA110"/>
			<xs:enumeration value="PIC24FJ256GA106"/>
			<xs:enumeration value="PIC24FJ256GA108"/>
			<xs:enumeration value="PIC24FJ256GA110"/>
			<xs:enumeration value="PIC24FJ64GB106"/>
			<xs:enumeration value="PIC24FJ64GB108"/>
			<xs:enumeration value="PIC24FJ64GB110"/>
			<xs:enumeration value="PIC24FJ128GB106"/>
			<xs:enumeration value="PIC24FJ128GB108"/>
			<xs:enumeration value="PIC24FJ128GB110"/>
			<xs:enumeration value="PIC24FJ192GB106"/>
			<xs:enumeration value="PIC24FJ192GB108"/>
			<xs:enumeration value="PIC24FJ192GB110"/>
			<xs:enumeration value="PIC24FJ256GB106"/>
			<xs:enumeration value="PIC24FJ256GB108"/>
			<xs:enumeration value="PIC24FJ256GB110"/>
			<xs:enumeration value="PIC24HJ12GP201"/>
			<xs:enumeration value="PIC24HJ12GP202"/>
			<xs:enumeration value="PIC24HJ16GP304"/>
			<xs:enumeration value="PIC24HJ32GP202"/>
			<xs:enumeration value="PIC24HJ32GP204"/>
			<xs:enumeration value="PIC24HJ32GP302"/>
			<xs:enumeration value="PIC24HJ32GP304"/>
			<xs:enumeration value="PIC24HJ64GP202"/>
			<xs:enumeration value="PIC24HJ64GP204"/>
			<xs:enumeration value="PIC24HJ64GP206"/>
			<xs:enumeration value="PIC24HJ64GP210"/>
			<xs:enumeration value="PIC24HJ64GP502"/>
			<xs:enumeration value="PIC24HJ64GP504"/>
			<xs:enumeration value="PIC24HJ64GP506"/>
			<xs:enumeration value="PIC24HJ64GP510"/>
			<xs:enumeration value="PIC24HJ128GP202"/>
			<xs:enumeration value="PIC24HJ128GP204"/>
			<xs:enumeration value="PIC24HJ128GP206"/>
			<xs:enumeration value="PIC24HJ128GP210"/>
			<xs:enumeration value="PIC24HJ128GP306"/>
			<xs:enumeration value="PIC24HJ128GP310"/>
			<xs:enumeration value="PIC24HJ128GP502"/>
			<xs:enumeration value="PIC24HJ128GP504"/>
			<xs:enumeration value="PIC24HJ128GP506"/>
			<xs:enumeration value="PIC24HJ128GP510"/>
			<xs:enumeration value="PIC24HJ256GP206"/>
			<xs:enumeration value="PIC24HJ256GP210"/>
			<xs:enumeration value="PIC24HJ256GP610"/>
			<xs:enumeration value="dsPIC30F1010"/>
			<xs:enumeration value="dsPIC30F2010"/>
			<xs:enumeration value="dsPIC30F2011"/>
			<xs:enumeration value="dsPIC30F2012"/>
			<xs:enumeration value="dsPIC30F2020"/>
			<xs:enumeration value="dsPIC30F2023"/>
			<xs:enumeration value="dsPIC30F3010"/>
			<xs:enumeration value="dsPIC30F3011"/>
			<xs:enumeration value="dsPIC30F3012"/>
			<xs:enumeration value="dsPIC30F3013"/>
			<xs:enumeration value="dsPIC30F3014"/>
			<xs:enumeration value="dsPIC30F4011"/>
			<xs:enumeration value="dsPIC30F4012"/>
			<xs:enumeration value="dsPIC30F4013"/>
			<xs:enumeration value="dsPIC30F5011"/>
			<xs:enumeration value="dsPIC30F5013"/>
			<xs:enumeration value="dsPIC30F5015"/>
			<xs:enumeration value="dsPIC30F5016"/>
			<xs:enumeration value="dsPIC30F6010A"/>
			<xs:enumeration value="dsPIC30F6011A"/>
			<xs:enumeration value="dsPIC30F6012A"/>
			<xs:enumeration value="dsPIC30F6013A"/>
			<xs:enumeration value="dsPIC30F6014A"/>
			<xs:enumeration value="dsPIC30F6015"/>
			<xs:enumeration value="dsPIC33FJ06GS101"/>
			<xs:enumeration value="dsPIC33FJ06GS102"/>
			<xs:enumeration value="dsPIC33FJ06GS202"/>
			<xs:enumeration value="dsPIC33FJ12GP201"/>
			<xs:enumeration value="dsPIC33FJ12GP202"/>
			<xs:enumeration value="dsPIC33FJ16GP304"/>
			<xs:enumeration value="dsPIC33FJ16GS402"/>
			<xs:enumeration value="dsPIC33FJ16GS404"/>
			<xs:enumeration value="dsPIC33FJ16GS502"/>
			<xs:enumeration value="dsPIC33FJ16GS504"/>
			<xs:enumeration value="dsPIC33FJ32GP202"/>
			<xs:enumeration value="dsPIC33FJ32GP204"/>
			<xs:enumeration value="dsPIC33FJ32GP302"/>
			<xs:enumeration value="dsPIC33FJ32GP304"/>
			<xs:enumeration value="dsPIC33FJ64GP202"/>
			<xs:enumeration value="dsPIC33FJ64GP204"/>
			<xs:enumeration value="dsPIC33FJ64GP206"/>
			<xs:enumeration value="dsPIC33FJ64GP306"/>
			<xs:enumeration value="dsPIC33FJ64GP310"/>
			<xs:enumeration value="dsPIC33FJ64GP706"/>
			<xs:enumeration value="dsPIC33FJ64GP708"/>
			<xs:enumeration value="dsPIC33FJ64GP710"/>
			<xs:enumeration value="dsPIC33FJ64GP802"/>
			<xs:enumeration value="dsPIC33FJ64GP804"/>
			<xs:enumeration value="dsPIC33FJ128GP202"/>
			<xs:enumeration value="dsPIC33FJ128GP204"/>
			<xs:enumeration value="dsPIC33FJ128GP206"/>
			<xs:enumeration value="dsPIC33FJ128GP306"/>
			<xs:enumeration value="dsPIC33FJ128GP310"/>
			<xs:enumeration value="dsPIC33FJ128GP706"/>
			<xs:enumeration value="dsPIC33FJ128GP708"/>
			<xs:enumeration value="dsPIC33FJ128GP710"/>
			<xs:enumeration value="dsPIC33FJ128GP802"/>
			<xs:enumeration value="dsPIC33FJ128GP804"/>
			<xs:enumeration value="dsPIC33FJ256GP506"/>
			<xs:enumeration value="dsPIC33FJ256GP510"/>
			<xs:enumeration value="dsPIC33FJ256GP710"/>
			<xs:enumeration value="dsPIC33FJ12MC201"/>
			<xs:enumeration value="dsPIC33FJ12MC202"/>
			<xs:enumeration value="dsPIC33FJ16MC304"/>
			<xs:enumeration value="dsPIC33FJ32MC202"/>
			<xs:enumeration value="dsPIC33FJ32MC204"/>
			<xs:enumeration value="dsPIC33FJ32MC302"/>
			<xs:enumeration value="dsPIC33FJ32MC304"/>
			<xs:enumeration value="dsPIC33FJ64MC202"/>
			<xs:enumeration value="dsPIC33FJ64MC204"/>
			<xs:enumeration value="dsPIC33FJ64MC506"/>
			<xs:enumeration value="dsPIC33FJ64MC508"/>
			<xs:enumeration value="dsPIC33FJ64MC510"/>
			<xs:enumeration value="dsPIC33FJ64MC706"/>
			<xs:enumeration value="dsPIC33FJ64MC710"/>
			<xs:enumeration value="dsPIC33FJ64MC802"/>
			<xs:enumeration value="dsPIC33FJ64MC804"/>
			<xs:enumeration value="dsPIC33FJ128MC202"/>
			<xs:enumeration value="dsPIC33FJ128MC204"/>
			<xs:enumeration value="dsPIC33FJ128MC506"/>
			<xs:enumeration value="dsPIC33FJ128MC510"/>
			<xs:enumeration value="dsPIC33FJ128MC706"/>
			<xs:enumeration value="dsPIC33FJ128MC708"/>
			<xs:enumeration value="dsPIC33FJ128MC710"/>
			<xs:enumeration value="dsPIC33FJ128MC802"/>
			<xs:enumeration value="dsPIC33FJ128MC804"/>
			<xs:enumeration value="dsPIC33FJ256MC510"/>
			<xs:enumeration value="dsPIC33FJ256MC710"/>
		</xs:restriction>
	</xs:simpleType>
	<!-- Common Controller ID -->
	<xs:simpleType name="commoncontid">
		<xs:annotation>
			<xs:documentation>
			The PK2 common controller handles functions which are niether
			programmer or debugger based.  The various controllers are
			specialized (through inheritence) to handle different scenarios
			which arise due to different parts.  This type is used to
			specify which one of the common controllers will be used 
			when dealing with a specific part
			</xs:documentation>
		</xs:annotation>
		<xs:restriction base="xs:token">
			<xs:enumeration value="CCT_BASIC"/>
		</xs:restriction>
	</xs:simpleType>
	<!-- Program Controller ID -->
	<xs:simpleType name="progcontid">
		<xs:annotation>
			<xs:documentation>
			The PK2 program controller handles functions which are specific
			to being a programmer.  The various controllers are
			specialized (through inheritence) to handle different scenarios
			which arise due to different parts.  This type is used to
			specify which one of the program controllers will be used 
			when dealing with a specific part
			  </xs:documentation>
		</xs:annotation>
		<xs:restriction base="xs:token">
			<xs:enumeration value="PCT_BASIC"/>
			<xs:enumeration value="PCT_MIDRANGE"/>
			<xs:enumeration value="PCT_BASELINE"/>
			<xs:enumeration value="PCT_18F"/>
			<xs:enumeration value="PCT_18J"/>
			<xs:enumeration value="PCT_18V2"/>
			<xs:enumeration value="PCT_24FJ"/>
			<xs:enumeration value="PCT_24HJ"/>
			<xs:enumeration value="PCT_30F"/>
			<xs:enumeration value="PCT_24FKA"/>
		</xs:restriction>
	</xs:simpleType>
	<!-- Debug Controller ID -->
	<xs:simpleType name="dbgcontid">
		<xs:annotation>
			<xs:documentation>
			The PK2 debug controller handles functions which are specific
			to being a debugger.  The various controllers are
			specialized (through inheritence) to handle different scenarios
			which arise due to different parts.  This type is used to
			specify which one of the debug controllers will be used 
			when dealing with a specific part.
			An _H_ in the controller name indicates that the device requires
			an ICD Header for debugging.
			</xs:documentation>
		</xs:annotation>
		<xs:restriction base="xs:token">
			<xs:enumeration value="DCT_BASIC"/>
			<xs:enumeration value="DCT_MIDRANGE"/>
			<xs:enumeration value="DCT_H_MIDRANGE"/>
			<xs:enumeration value="DCT_H_16F716"/>
			<xs:enumeration value="DCT_18F"/>
			<xs:enumeration value="DCT_18F_EGG"/>
			<xs:enumeration value="DCT_18F_V2"/>
			<xs:enumeration value="DCT_18J_V2"/>
			<xs:enumeration value="DCT_H_BASELINE"/>
			<xs:enumeration value="DCT_24FJ"/>
			<xs:enumeration value="DCT_33FJ"/>
			<xs:enumeration value="DCT_30F"/>
			<xs:enumeration value="DCT_18J"/>
		</xs:restriction>
	</xs:simpleType>
	<!-- Memory IDs -->
	<xs:simpleType name="memoryid">
		<xs:annotation>
			<xs:documentation>
			An enumeration of all the memory types
			</xs:documentation>
		</xs:annotation>
		<xs:restriction base="xs:token">
			<xs:enumeration value="MT_PROGRAM"/>
			<xs:enumeration value="MT_FILE_REGISTERS"/>
			<xs:enumeration value="MT_EXTERNAL"/>
			<xs:enumeration value="MT_EEPROM"/>
			<xs:enumeration value="MT_STACK"/>
			<xs:enumeration value="MT_CONFIGURATION"/>
			<xs:enumeration value="MT_USER_ID"/>
			<xs:enumeration value="MT_DEVICE_ID"/>
			<xs:enumeration value="MT_TEST"/>
			<xs:enumeration value="MT_NMMR"/>
			<xs:enumeration value="MT_BOOT_RAM"/>
			<xs:enumeration value="MT_CALIBRATION"/>
			<xs:enumeration value="MT_BKBUG_VECTOR"/>
			<xs:enumeration value="MT_EMULATION_REGISTERS"/>
			<xs:enumeration value="MT_CONFIGURATION_WORM"/>
			<xs:enumeration value="MT_EXECUTIVE"/>
		</xs:restriction>
	</xs:simpleType>
	<!-- Memory object IDs -->
	<xs:simpleType name="memoryobjid">
		<xs:annotation>
			<xs:documentation>
			An enumeration of all the memory object types.  PK2 specializes 
			through inheritance the memory object class.  This enumeration 
			gives all the different specializations.
			</xs:documentation>
		</xs:annotation>
		<xs:restriction base="xs:token">
			<xs:enumeration value="MOT_STANDARD"/>
			<xs:enumeration value="MOT_PROGRAM"/>
			<xs:enumeration value="MOT_PROGRAM_TMSC"/>
			<xs:enumeration value="MOT_CONFIG"/>
			<xs:enumeration value="MOT_CONFIG33F"/>
			<xs:enumeration value="MOT_FILE_REGISTER"/>
			<xs:enumeration value="MOT_FILE_REGISTER16"/>
		</xs:restriction>
	</xs:simpleType>
	<!-- Read/Write -->
	<xs:simpleType name="readwrite">
		<xs:annotation>
			<xs:documentation>
         An enumeration specifying read or write - simply used to help validate 
         the XML
			</xs:documentation>
		</xs:annotation>
		<xs:restriction base="xs:token">
			<xs:enumeration value="READ"/>
			<xs:enumeration value="WRITE"/>
		</xs:restriction>
	</xs:simpleType>
	<!-- Debug Executives -->
	<xs:simpleType name="debugexecid">
		<xs:annotation>
			<xs:documentation>
			An enumeration of all the debug executives
			</xs:documentation>
		</xs:annotation>
		<xs:restriction base="xs:token">
			<xs:enumeration value="PIC12F629"/>
			<xs:enumeration value="PIC12F635"/>
			<xs:enumeration value="PIC12F629"/>
			<xs:enumeration value="PIC16F505"/>
			<xs:enumeration value="PIC16F506"/>
			<xs:enumeration value="16F616-ICD_1KB0"/>
			<xs:enumeration value="16F616-ICD_2KB1"/>
			<xs:enumeration value="PIC16F631"/>
			<xs:enumeration value="PIC16F648A"/>
			<xs:enumeration value="PIC16F676"/>
			<xs:enumeration value="PIC16F677"/>
			<xs:enumeration value="PIC16F684"/>
			<xs:enumeration value="PIC16F684_2BANK"/>
			<xs:enumeration value="PIC16F688"/>
			<xs:enumeration value="PIC16F716"/>
			<xs:enumeration value="pk72X2KB1"/>
			<xs:enumeration value="pk72X4KB2"/>
			<xs:enumeration value="pk72X8KB3"/>
			<xs:enumeration value="PIC16F777"/>
			<xs:enumeration value="PIC16F88"/>
			<xs:enumeration value="PIC16F819"/>
			<xs:enumeration value="PIC16F872"/>
			<xs:enumeration value="PIC16F874A"/>
			<xs:enumeration value="PIC16F877A"/>
			<xs:enumeration value="PIC16F882"/>
			<xs:enumeration value="PIC16F884"/>
			<xs:enumeration value="PIC16F886"/>
			<xs:enumeration value="PIC16F917"/>
			<xs:enumeration value="PIC18F1320"/>
			<xs:enumeration value="PIC18F4420"/>
			<xs:enumeration value="PIC18F4450"/>
			<xs:enumeration value="PIC18F4550"/>
			<xs:enumeration value="PIC18F4520"/>
			<xs:enumeration value="PIC18F4620"/>
			<xs:enumeration value="PIC18F4685"/>
			<xs:enumeration value="PIC18F6520"/>
			<xs:enumeration value="PIC18FJ_Bank3"/>
			<xs:enumeration value="PIC18FJ_Bank7"/>
			<xs:enumeration value="PIC18FJ_Bank13"/>
			<xs:enumeration value="PIC18FJ_Bank14"/>
			<xs:enumeration value="PIC18_ICD_V2"/>
			<xs:enumeration value="PIC24FJ64GA004"/>
			<xs:enumeration value="PK30F"/>
			<xs:enumeration value="PK30FSMPS"/>
			<xs:enumeration value="PK33F"/>
		</xs:restriction>
	</xs:simpleType>
	<!-- -->
	<!-- Elements -->
	<!-- -->
	<!-- Document node -->
	<xs:element name="pk2doc">
		<xs:annotation>
			<xs:documentation>
			PICkit 2 tool database - main document node
			</xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:sequence>
				<xs:element ref="pk2:part" maxOccurs="unbounded"/>
				<xs:element ref="pk2:debugexec" maxOccurs="unbounded"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<!-- Part element -->
	<xs:element name="part">
		<xs:annotation>
			<xs:documentation>
			PICkit 2 tool database - part element
			Contains all the information needed by PK2 to support the
			associated part
			</xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:sequence>
				<!-- I really don't want to use a sequence here, but... -->
				<xs:element ref="pk2:commoncont" minOccurs="0"/>
				<xs:element ref="pk2:progcont" minOccurs="0"/>
				<xs:element ref="pk2:dbgcont" minOccurs="0"/>
				<xs:element ref="pk2:debugexecref" minOccurs="0"/>
				<xs:element ref="pk2:memoryobjspec" minOccurs="0" maxOccurs="unbounded"/>
				<xs:element ref="pk2:memorypagesizespec" minOccurs="0" maxOccurs="unbounded"/>
				<xs:element ref="pk2:icdregvalue" minOccurs="0" maxOccurs="unbounded"/>
				<xs:element ref="pk2:numbreakpoints" minOccurs="0" maxOccurs="unbounded"/>
				<xs:element ref="pk2:headerdevid" minOccurs="0" maxOccurs="unbounded"/>
				<xs:element ref="pk2:putdisable" minOccurs="0" maxOccurs="unbounded"/>
				<xs:element ref="pk2:headerconfig" minOccurs="0" maxOccurs="unbounded"/>
			</xs:sequence>
			<xs:attribute name="id" type="pk2:partid" use="required"/>
		</xs:complexType>
	</xs:element>
	<!-- Common Controller -->
	<xs:element name="commoncont">
		<xs:annotation>
			<xs:documentation>
			PICkit 2 tool database - Specifies which common controller
			is used by a part.  The ID field must be a pk2:commoncontid.
			Default is CCT_BASIC.
			</xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:attribute name="id" type="pk2:commoncontid" use="required"/>
		</xs:complexType>
	</xs:element>
	<!-- Program Controller -->
	<xs:element name="progcont">
		<xs:annotation>
			<xs:documentation>
			PICkit 2 tool database - Specifies which program controller
			is used by a part.  The ID field must be a pk2:progcontid.
			Default is PCT_BASIC.
			</xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:attribute name="id" type="pk2:progcontid" use="required"/>
		</xs:complexType>
	</xs:element>
	<!-- Debug Controller -->
	<xs:element name="dbgcont">
		<xs:annotation>
			<xs:documentation>
			PICkit 2 tool database - Specifies which debug controller
			is used by a part.  The ID field must be a pk2:dbgcontid
			Default is PCT_BASIC.
			</xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:attribute name="id" type="pk2:dbgcontid" use="required"/>
		</xs:complexType>
	</xs:element>
	<!-- Memory object specification -->
	<xs:element name="memoryobjspec">
		<xs:annotation>
			<xs:documentation>
			Allows the DB to specify that PK2 uses a specific memory specialization
			(ie a specific child in the memory object inheritance tree).
			</xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:attribute name="memtype" type="pk2:memoryid" use="required"/>
			<xs:attribute name="memobj" type="pk2:memoryobjid" use="required"/>
		</xs:complexType>
	</xs:element>
	<!-- Memory page size specfication -->
	<xs:element name="memorypagesizespec">
		<xs:annotation>
			<xs:documentation>
         Used to specify a read/write page size for a specific memory.
         A default of "1" is assumed by ICD2, so this element is only 
         needed when the value isn't "1" (most of the time it IS "1").
			</xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:attribute name="memtype" type="pk2:memoryid" use="required"/>
			<xs:attribute name="memreadwrite" type="pk2:readwrite" use="required"/>
			<xs:attribute name="mempagesize" type="xs:positiveInteger" use="required"/>
		</xs:complexType>
	</xs:element>
	<!-- icdregvalue -->
	<xs:element name="icdregvalue">
		<xs:annotation>
			<xs:documentation>
			Device select value writtent to -ICD ICDREG config word
			</xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:attribute name="devselect" type="pk2:hex32" use="required"/>
		</xs:complexType>
	</xs:element>
	<!-- numbreakpoints -->
	<xs:element name="numbreakpoints">
		<xs:annotation>
			<xs:documentation>
			Non-standard number of breakpoints for part
			</xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:attribute name="breakpoints" type="xs:positiveInteger" use="required"/>
		</xs:complexType>
	</xs:element>
	<!-- headerdevid -->
	<xs:element name="headerdevid">
		<xs:annotation>
			<xs:documentation>
			Alternate Device ID for icd/ice headers
			</xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:attribute name="altdeviceid" type="pk2:hex32" use="required"/>
		</xs:complexType>
	</xs:element>
	<!-- putdisable -->
	<xs:element name="putdisable">
		<xs:annotation>
			<xs:documentation>
			debug requires disabled of PowerUpTimer for revs less than given number
			</xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:attribute name="revlessthan" type="xs:positiveInteger" use="required"/>
		</xs:complexType>
	</xs:element>
	<!-- headerconfig -->
	<xs:element name="headerconfig">
		<xs:annotation>
			<xs:documentation>
			Config location for icd/ice headers
			</xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:attribute name="configaddr" type="pk2:hex32" use="required"/>
		</xs:complexType>
	</xs:element>
	<!-- Debug Exec element -->
	<xs:element name="debugexec">
		<xs:annotation>
			<xs:documentation>
         All of the data associated with a debug executive
			</xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:sequence>
				<xs:element ref="pk2:defilename"/>
				<xs:element ref="pk2:desize"/>
				<xs:element ref="pk2:dememtype"/>
				<xs:element ref="pk2:depcadd"/>
				<xs:element ref="pk2:dewregadd"/>
				<xs:element ref="pk2:dereservedrange" minOccurs="0" maxOccurs="unbounded"/>
				<xs:element ref="pk2:deremap" minOccurs="0" maxOccurs="unbounded"/>
				<xs:element ref="pk2:deremapshdw" minOccurs="0" maxOccurs="unbounded"/>
				<xs:element ref="pk2:forcedevid" minOccurs="0" maxOccurs="unbounded"/>
				<xs:element ref="pk2:forcedeaddr" minOccurs="0" maxOccurs="unbounded"/>
				<xs:element ref="pk2:icdosccaladdr" minOccurs="0" maxOccurs="unbounded"/>
				<xs:element ref="pk2:usevppreset" minOccurs="0" maxOccurs="unbounded"/>
			</xs:sequence>
			<xs:attribute name="id" type="pk2:debugexecid" use="required"/>
		</xs:complexType>
	</xs:element>
	<!-- Debug execref -->
	<xs:element name="debugexecref">
		<xs:annotation>
			<xs:documentation>
			A reference to a debug executive
			</xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:attribute name="deref" type="pk2:debugexecid" use="required"/>
		</xs:complexType>
	</xs:element>
	<!-- defilename -->
	<xs:element name="defilename">
		<xs:annotation>
			<xs:documentation>
			A Filename
			</xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:attribute name="filename" type="xs:string" use="required"/>
		</xs:complexType>
	</xs:element>
	<!-- desize -->
	<xs:element name="desize">
		<xs:annotation>
			<xs:documentation>
			A size value
			</xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:attribute name="size" type="pk2:hex16" use="required"/>
		</xs:complexType>
	</xs:element>
	<!-- dememtype -->
	<xs:element name="dememtype">
		<xs:annotation>
			<xs:documentation>
			The type of memory the DE is stored in
			</xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:attribute name="memtype" type="pk2:memoryid" use="required"/>
		</xs:complexType>
	</xs:element>
	<!-- depcadd -->
	<xs:element name="depcadd">
		<xs:annotation>
			<xs:documentation>
			The address the DE will store the PC at
			</xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:attribute name="address" type="pk2:hex32" use="required"/>
		</xs:complexType>
	</xs:element>
	<!-- dewregadd -->
	<xs:element name="dewregadd">
		<xs:annotation>
			<xs:documentation>
			The address the DE will store the WREG at
			</xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:attribute name="address" type="pk2:hex32" use="required"/>
		</xs:complexType>
	</xs:element>
	<!-- dereservedrange -->
	<xs:element name="dereservedrange">
		<xs:annotation>
			<xs:documentation>
			Specifies a range of addresses reserved by the DE
			</xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:attribute name="start" type="pk2:hex32" use="required"/>
			<xs:attribute name="end" type="pk2:hex32" use="required"/>
		</xs:complexType>
	</xs:element>
	<!-- deremap -->
	<xs:element name="deremap">
		<xs:annotation>
			<xs:documentation>
			Used to specify that the DE saves the contents of a file register
			at a specified address.  When MPLAB attempts to access this register
			it should read/write from the saved address rather than the real address
			</xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:attribute name="realadd" type="pk2:hex32" use="required"/>
			<xs:attribute name="savedadd" type="pk2:hex32" use="required"/>
		</xs:complexType>
	</xs:element>
	<!-- deremapshdw -->
	<xs:element name="deremapshdw">
		<xs:annotation>
			<xs:documentation>
			Used to specify that the DE saves the contents of a file register
			at a specified shadow register address.  When MPLAB attempts to
			access this register it should read/write from the shadow address
			rather than the real address
			</xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:attribute name="realadd" type="pk2:hex32" use="required"/>
			<xs:attribute name="shadowadd" type="pk2:hex32" use="required"/>
		</xs:complexType>
	</xs:element>
	<!-- forcedevid -->
	<xs:element name="forcedevid">
		<xs:annotation>
			<xs:documentation>
			Force the Device ID to this value when using the ICD header
			</xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:attribute name="deviceid" type="pk2:hex32" use="required"/>
		</xs:complexType>
	</xs:element>
	<!-- forcedeaddr -->
	<xs:element name="forcedeaddr">
		<xs:annotation>
			<xs:documentation>
			Force the DE start address to this value
			</xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:attribute name="destart" type="pk2:hex32" use="required"/>
		</xs:complexType>
	</xs:element>
	<!-- icdosccaladdr -->
	<xs:element name="icdosccaladdr">
		<xs:annotation>
			<xs:documentation>
			Where to get the OSCCAL address from an -ICD part
			</xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:attribute name="caladdress" type="pk2:hex32" use="required"/>
		</xs:complexType>
	</xs:element>
	<!-- usevppreset -->
	<xs:element name="usevppreset">
		<xs:annotation>
			<xs:documentation>
			MCLR pin disabled when target halted, use VPP to reset
			</xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:attribute name="vppreset" type="xs:positiveInteger" use="required"/>
		</xs:complexType>
	</xs:element>
	<!-- icdosccaladdr -->
	<!-- -->
	<!-- Attributes -->
	<!-- -->
	<!-- name -->
	<xs:attribute name="name" type="xs:normalizedString"/>
</xs:schema>
