<?xml version="1.0" encoding="UTF-8"?>

<processor_spec>

  <programcounter register="PC"/>
  
  <volatile outputop="write_volatile" inputop="read_volatile">
    <range space="SFR" first="0x0" last="0xFF"/>
  </volatile>
  
  <default_symbols>
  
    <symbol name="BANK0_R0" address="RAM:7f0000"/>
    <symbol name="BANK0_R1" address="RAM:7f0001"/>
    <symbol name="BANK0_R2" address="RAM:7f0002"/>
    <symbol name="BANK0_R3" address="RAM:7f0003"/>
    <symbol name="BANK0_R4" address="RAM:7f0004"/>
    <symbol name="BANK0_R5" address="RAM:7f0005"/>
    <symbol name="BANK0_R6" address="RAM:7f0006"/>
    <symbol name="BANK0_R7" address="RAM:7f0007"/>
    
    <symbol name="BANK1_R0" address="RAM:7f0008"/>
    <symbol name="BANK1_R1" address="RAM:7f0009"/>
    <symbol name="BANK1_R2" address="RAM:7f000a"/>
    <symbol name="BANK1_R3" address="RAM:7f000b"/>
    <symbol name="BANK1_R4" address="RAM:7f000c"/>
    <symbol name="BANK1_R5" address="RAM:7f000d"/>
    <symbol name="BANK1_R6" address="RAM:7f000e"/>
    <symbol name="BANK1_R7" address="RAM:7f000f"/>
    
    <symbol name="BANK2_R0" address="RAM:7f0010"/>
    <symbol name="BANK2_R1" address="RAM:7f0011"/>
    <symbol name="BANK2_R2" address="RAM:7f0012"/>
    <symbol name="BANK2_R3" address="RAM:7f0013"/>
    <symbol name="BANK2_R4" address="RAM:7f0014"/>
    <symbol name="BANK2_R5" address="RAM:7f0015"/>
    <symbol name="BANK2_R6" address="RAM:7f0016"/>
    <symbol name="BANK2_R7" address="RAM:7f0017"/>
    
    <symbol name="BANK3_R0" address="RAM:7f0018"/>
    <symbol name="BANK3_R1" address="RAM:7f0019"/>
    <symbol name="BANK3_R2" address="RAM:7f001a"/>
    <symbol name="BANK3_R3" address="RAM:7f001b"/>
    <symbol name="BANK3_R4" address="RAM:7f001c"/>
    <symbol name="BANK3_R5" address="RAM:7f001d"/>
    <symbol name="BANK3_R6" address="RAM:7f001e"/>
    <symbol name="BANK3_R7" address="RAM:7f001f"/>
  
    <symbol name="P0" address="SFR:80"/>
    		<symbol name="SP" address="SFR:81"/>
		    <symbol name="DPL" address="SFR:82"/>
		    <symbol name="DPH" address="SFR:83"/>
		    <symbol name="DPXL" address="SFR:84"/>
    <symbol name="PCON" address="SFR:87"/>
    <symbol name="TCON" address="SFR:88"/>
    <symbol name="TMOD" address="SFR:89"/>
    <symbol name="TL0" address="SFR:8a"/>
    <symbol name="TL1" address="SFR:8b"/>
    <symbol name="TH0" address="SFR:8c"/>
    <symbol name="TH1" address="SFR:8d"/>
    <symbol name="FADDR" address="SFR:8f"/>
    <symbol name="P1" address="SFR:90"/>
    <symbol name="DPX" address="SFR:93"/>
    <symbol name="HADDR" address="SFR:97"/>
    <symbol name="SCON" address="SFR:98"/>
    <symbol name="SBUF" address="SFR:99"/>
    <symbol name="P2" address="SFR:a0"/>
    <symbol name="HIE" address="SFR:a1"/>
    <symbol name="FIE" address="SFR:a2"/>
    <symbol name="FIE1" address="SFR:a3"/>
    <symbol name="WDTRST" address="SFR:a6"/>
    <symbol name="WCON" address="SFR:a7"/>
    <symbol name="IE" address="SFR:a8"/>
    <symbol name="SADDR" address="SFR:a9"/>
    <symbol name="HSTAT" address="SFR:ae"/>
    <symbol name="P3" address="SFR:b0"/>
    <symbol name="IEN1" address="SFR:b1"/>
    <symbol name="IPL1" address="SFR:b2"/>
    <symbol name="IPH1" address="SFR:b3"/>
    <symbol name="IPH0" address="SFR:b7"/>
    <symbol name="IP" address="SFR:b8"/>
    <symbol name="SADEN" address="SFR:b9"/>
    <symbol name="SPH" address="SFR:be"/>
    <symbol name="FIFLG" address="SFR:c0"/>
    <symbol name="FIFLG1" address="SFR:c1"/>
    <symbol name="EPCONFIG" address="SFR:c7"/>
    <symbol name="T2CON" address="SFR:c8"/>
    <symbol name="T2MOD" address="SFR:c9"/>
    <symbol name="RCAP2L" address="SFR:ca"/>
    <symbol name="RCAP2H" address="SFR:cb"/>
    <symbol name="TL2" address="SFR:cc"/>
    <symbol name="TH2" address="SFR:cd"/>
    <symbol name="HPCON" address="SFR:cf"/>
    <symbol name="PSW" address="SFR:d0"/>
    <symbol name="PSW1" address="SFR:d1"/>
    <symbol name="SOFL" address="SFR:d2"/>
    <symbol name="HPINDEX" address="SFR:d4"/>
    <symbol name="HPSC" address="SFR:d5"/>
    <symbol name="HPSTAT" address="SFR:d7"/>
    <symbol name="CCON" address="SFR:d8"/>
    <symbol name="CMOD" address="SFR:d9"/>
    <symbol name="CCAPM0" address="SFR:da"/>
    <symbol name="CCAPM1" address="SFR:db"/>
    <symbol name="CCAPM2" address="SFR:dc"/>
    <symbol name="CCAPM3" address="SFR:dd"/>
    <symbol name="CCAPM4" address="SFR:de"/>
    <symbol name="PCON1" address="SFR:df"/>
    			<symbol name="ACC" address="SFR:e0"/>
    <symbol name="EPCON" address="SFR:e1"/>
    <symbol name="RXSTAT" address="SFR:e2"/>
    <symbol name="RXDAT" address="SFR:e3"/>
    <symbol name="RXCON" address="SFR:e4"/>
    <symbol name="RXFLG" address="SFR:e5"/>
    <symbol name="RXCNTL" address="SFR:e6"/>
    <symbol name="RXCNTH" address="SFR:e7"/>
    <symbol name="HIFLG" address="SFR:e8"/>
    <symbol name="CL" address="SFR:e9"/>
    <symbol name="CCAP0L" address="SFR:ea"/>
    <symbol name="CCAP1L" address="SFR:eb"/>
    <symbol name="CCAP2L" address="SFR:ec"/>
    <symbol name="CCAP3L" address="SFR:ed"/>
    <symbol name="CCAP4L" address="SFR:ee"/>
    			<symbol name="B" address="SFR:f0"/>
    <symbol name="EPINDEX" address="SFR:f1"/>
    <symbol name="TXSTAT" address="SFR:f2"/>
    <symbol name="TXDAT" address="SFR:f3"/>
    <symbol name="TXCON" address="SFR:f4"/>
    <symbol name="TXFLG" address="SFR:f5"/>
    <symbol name="TXCNTL" address="SFR:f6"/>
    <symbol name="TXCNTH" address="SFR:f7"/>
    <symbol name="CH" address="SFR:f9"/>
    <symbol name="CCAP0H" address="SFR:fa"/>
    <symbol name="CCAP1H" address="SFR:fb"/>
    <symbol name="CCAP2H" address="SFR:fc"/>
    <symbol name="CCAP3H" address="SFR:fd"/>
    <symbol name="CCAP4H" address="SFR:fe"/>

    <symbol name="SPE" address="ESFR:fb"/>
    <symbol name="EPL" address="ESFR:fc"/>
    <symbol name="EPM" address="ESFR:fd"/>
    <symbol name="EPH" address="ESFR:fe"/>
    <symbol name="MXCON" address="ESFR:ff"/>
    
    <symbol name="20.0" address="BITS:00"/>
    <symbol name="20.1" address="BITS:01"/>
    <symbol name="20.2" address="BITS:02"/>
    <symbol name="20.3" address="BITS:03"/>
    <symbol name="20.4" address="BITS:04"/>
    <symbol name="20.5" address="BITS:05"/>
    <symbol name="20.6" address="BITS:06"/>
    <symbol name="20.7" address="BITS:07"/>
    <symbol name="21.0" address="BITS:08"/>
    <symbol name="21.1" address="BITS:09"/>
    <symbol name="21.2" address="BITS:0a"/>
    <symbol name="21.3" address="BITS:0b"/>
    <symbol name="21.4" address="BITS:0c"/>
    <symbol name="21.5" address="BITS:0d"/>
    <symbol name="21.6" address="BITS:0e"/>
    <symbol name="21.7" address="BITS:0f"/>
    <symbol name="22.0" address="BITS:10"/>
    <symbol name="22.1" address="BITS:11"/>
    <symbol name="22.2" address="BITS:12"/>
    <symbol name="22.3" address="BITS:13"/>
    <symbol name="22.4" address="BITS:14"/>
    <symbol name="22.5" address="BITS:15"/>
    <symbol name="22.6" address="BITS:16"/>
    <symbol name="22.7" address="BITS:17"/>
    <symbol name="23.0" address="BITS:18"/>
    <symbol name="23.1" address="BITS:19"/>
    <symbol name="23.2" address="BITS:1a"/>
    <symbol name="23.3" address="BITS:1b"/>
    <symbol name="23.4" address="BITS:1c"/>
    <symbol name="23.5" address="BITS:1d"/>
    <symbol name="23.6" address="BITS:1e"/>
    <symbol name="23.7" address="BITS:1f"/>
    <symbol name="24.0" address="BITS:20"/>
    <symbol name="24.1" address="BITS:21"/>
    <symbol name="24.2" address="BITS:22"/>
    <symbol name="24.3" address="BITS:23"/>
    <symbol name="24.4" address="BITS:24"/>
    <symbol name="24.5" address="BITS:25"/>
    <symbol name="24.6" address="BITS:26"/>
    <symbol name="24.7" address="BITS:27"/>
    <symbol name="25.0" address="BITS:28"/>
    <symbol name="25.1" address="BITS:29"/>
    <symbol name="25.2" address="BITS:2a"/>
    <symbol name="25.3" address="BITS:2b"/>
    <symbol name="25.4" address="BITS:2c"/>
    <symbol name="25.5" address="BITS:2d"/>
    <symbol name="25.6" address="BITS:2e"/>
    <symbol name="25.7" address="BITS:2f"/>
    <symbol name="26.0" address="BITS:30"/>
    <symbol name="26.1" address="BITS:31"/>
    <symbol name="26.2" address="BITS:32"/>
    <symbol name="26.3" address="BITS:33"/>
    <symbol name="26.4" address="BITS:34"/>
    <symbol name="26.5" address="BITS:35"/>
    <symbol name="26.6" address="BITS:36"/>
    <symbol name="26.7" address="BITS:37"/>
    <symbol name="27.0" address="BITS:38"/>
    <symbol name="27.1" address="BITS:39"/>
    <symbol name="27.2" address="BITS:3a"/>
    <symbol name="27.3" address="BITS:3b"/>
    <symbol name="27.4" address="BITS:3c"/>
    <symbol name="27.5" address="BITS:3d"/>
    <symbol name="27.6" address="BITS:3e"/>
    <symbol name="27.7" address="BITS:3f"/>
    <symbol name="28.0" address="BITS:40"/>
    <symbol name="28.1" address="BITS:41"/>
    <symbol name="28.2" address="BITS:42"/>
    <symbol name="28.3" address="BITS:43"/>
    <symbol name="28.4" address="BITS:44"/>
    <symbol name="28.5" address="BITS:45"/>
    <symbol name="28.6" address="BITS:46"/>
    <symbol name="28.7" address="BITS:47"/>
    <symbol name="29.0" address="BITS:48"/>
    <symbol name="29.1" address="BITS:49"/>
    <symbol name="29.2" address="BITS:4a"/>
    <symbol name="29.3" address="BITS:4b"/>
    <symbol name="29.4" address="BITS:4c"/>
    <symbol name="29.5" address="BITS:4d"/>
    <symbol name="29.6" address="BITS:4e"/>
    <symbol name="29.7" address="BITS:4f"/>
    <symbol name="2a.0" address="BITS:50"/>
    <symbol name="2a.1" address="BITS:51"/>
    <symbol name="2a.2" address="BITS:52"/>
    <symbol name="2a.3" address="BITS:53"/>
    <symbol name="2a.4" address="BITS:54"/>
    <symbol name="2a.5" address="BITS:55"/>
    <symbol name="2a.6" address="BITS:56"/>
    <symbol name="2a.7" address="BITS:57"/>
    <symbol name="2b.0" address="BITS:58"/>
    <symbol name="2b.1" address="BITS:59"/>
    <symbol name="2b.2" address="BITS:5a"/>
    <symbol name="2b.3" address="BITS:5b"/>
    <symbol name="2b.4" address="BITS:5c"/>
    <symbol name="2b.5" address="BITS:5d"/>
    <symbol name="2b.6" address="BITS:5e"/>
    <symbol name="2b.7" address="BITS:5f"/>
    <symbol name="2c.0" address="BITS:60"/>
    <symbol name="2c.1" address="BITS:61"/>
    <symbol name="2c.2" address="BITS:62"/>
    <symbol name="2c.3" address="BITS:63"/>
    <symbol name="2c.4" address="BITS:64"/>
    <symbol name="2c.5" address="BITS:65"/>
    <symbol name="2c.6" address="BITS:66"/>
    <symbol name="2c.7" address="BITS:67"/>
    <symbol name="2d.0" address="BITS:68"/>
    <symbol name="2d.1" address="BITS:69"/>
    <symbol name="2d.2" address="BITS:6a"/>
    <symbol name="2d.3" address="BITS:6b"/>
    <symbol name="2d.4" address="BITS:6c"/>
    <symbol name="2d.5" address="BITS:6d"/>
    <symbol name="2d.6" address="BITS:6e"/>
    <symbol name="2d.7" address="BITS:6f"/>
    <symbol name="2e.0" address="BITS:70"/>
    <symbol name="2e.1" address="BITS:71"/>
    <symbol name="2e.2" address="BITS:72"/>
    <symbol name="2e.3" address="BITS:73"/>
    <symbol name="2e.4" address="BITS:74"/>
    <symbol name="2e.5" address="BITS:75"/>
    <symbol name="2e.6" address="BITS:76"/>
    <symbol name="2e.7" address="BITS:77"/>
    <symbol name="2f.0" address="BITS:78"/>
    <symbol name="2f.1" address="BITS:79"/>
    <symbol name="2f.2" address="BITS:7a"/>
    <symbol name="2f.3" address="BITS:7b"/>
    <symbol name="2f.4" address="BITS:7c"/>
    <symbol name="2f.5" address="BITS:7d"/>
    <symbol name="2f.6" address="BITS:7e"/>
    <symbol name="2f.7" address="BITS:7f"/>
    
    <symbol name="P0.0" address="BITS:80"/>
    <symbol name="P0.1" address="BITS:81"/>
    <symbol name="P0.2" address="BITS:82"/>
    <symbol name="P0.3" address="BITS:83"/>
    <symbol name="P0.4" address="BITS:84"/>
    <symbol name="P0.5" address="BITS:85"/>
    <symbol name="P0.6" address="BITS:86"/>
    <symbol name="P0.7" address="BITS:87"/>
    <symbol name="IT0" address="BITS:88"/>
    <symbol name="IE0" address="BITS:89"/>
    <symbol name="IT1" address="BITS:8a"/>
    <symbol name="IE1" address="BITS:8b"/>
    <symbol name="TR0" address="BITS:8c"/>
    <symbol name="TF0" address="BITS:8d"/>
    <symbol name="TR1" address="BITS:8e"/>
    <symbol name="TF1" address="BITS:8f"/>
    <symbol name="P1.0" address="BITS:90"/>
    <symbol name="P1.1" address="BITS:91"/>
    <symbol name="P1.2" address="BITS:92"/>
    <symbol name="P1.3" address="BITS:93"/>
    <symbol name="P1.4" address="BITS:94"/>
    <symbol name="P1.5" address="BITS:95"/>
    <symbol name="P1.6" address="BITS:96"/>
    <symbol name="P1.7" address="BITS:97"/>
    <symbol name="RI" address="BITS:98"/>
    <symbol name="TI" address="BITS:99"/>
    <symbol name="RB8" address="BITS:9a"/>
    <symbol name="TB8" address="BITS:9b"/>
    <symbol name="REN" address="BITS:9c"/>
    <symbol name="SM2" address="BITS:9d"/>
    <symbol name="SM1" address="BITS:9e"/>
    <symbol name="SM0" address="BITS:9f"/>
    <symbol name="P2.0" address="BITS:a0"/>
    <symbol name="P2.1" address="BITS:a1"/>
    <symbol name="P2.2" address="BITS:a2"/>
    <symbol name="P2.3" address="BITS:a3"/>
    <symbol name="P2.4" address="BITS:a4"/>
    <symbol name="P2.5" address="BITS:a5"/>
    <symbol name="P2.6" address="BITS:a6"/>
    <symbol name="P2.7" address="BITS:a7"/>
    <symbol name="EX0" address="BITS:a8"/>
    <symbol name="ET0" address="BITS:a9"/>
    <symbol name="EX1" address="BITS:aa"/>
    <symbol name="ET1" address="BITS:ab"/>
    <symbol name="ES" address="BITS:ac"/>
    <symbol name="ET2" address="BITS:ad"/>
    <symbol name="EC" address="BITS:ae"/>
    <symbol name="EA" address="BITS:af"/>
    <symbol name="RXD" address="BITS:b0"/>
    <symbol name="TXD" address="BITS:b1"/>
    <symbol name="INT0" address="BITS:b2"/>
    <symbol name="INT1" address="BITS:b3"/>
    <symbol name="T0" address="BITS:b4"/>
    <symbol name="T1" address="BITS:b5"/>
    <symbol name="WR" address="BITS:b6"/>
    <symbol name="RD" address="BITS:b7"/>
    <symbol name="PX0" address="BITS:b8"/>
    <symbol name="PT0" address="BITS:b9"/>
    <symbol name="PX1" address="BITS:ba"/>
    <symbol name="PT1" address="BITS:bb"/>
    <symbol name="PS" address="BITS:bc"/>
    <symbol name="PT2" address="BITS:bd"/>
    <symbol name="PC" address="BITS:be"/>
    <symbol name="IP.7" address="BITS:bf"/>
    <symbol name="FIFLG.0" address="BITS:c0"/>
    <symbol name="FIFLG.1" address="BITS:c1"/>
    <symbol name="FIFLG.2" address="BITS:c2"/>
    <symbol name="FIFLG.3" address="BITS:c3"/>
    <symbol name="FIFLG.4" address="BITS:c4"/>
    <symbol name="FIFLG.5" address="BITS:c5"/>
    <symbol name="FIFLG.6" address="BITS:c6"/>
    <symbol name="FIFLG.7" address="BITS:c7"/>
    <symbol name="CPRL2" address="BITS:c8"/>
    <symbol name="CT2" address="BITS:c9"/>
    <symbol name="TR2" address="BITS:ca"/>
    <symbol name="EXEN2" address="BITS:cb"/>
    <symbol name="TCLK" address="BITS:cc"/>
    <symbol name="RCLK" address="BITS:cd"/>
    <symbol name="EXF2" address="BITS:ce"/>
    <symbol name="TF2" address="BITS:cf"/>
    <symbol name="P" address="BITS:d0"/>
    <symbol name="UD" address="BITS:d1"/>
    <symbol name="OV" address="BITS:d2"/>
    <symbol name="RS0" address="BITS:d3"/>
    <symbol name="RS1" address="BITS:d4"/>
    <symbol name="F0" address="BITS:d5"/>
    <symbol name="AC" address="BITS:d6"/>
    <symbol name="C" address="BITS:d7"/>
    <symbol name="CCF.0" address="BITS:d8"/>
    <symbol name="CCF.1" address="BITS:d9"/>
    <symbol name="CCF.2" address="BITS:da"/>
    <symbol name="CCF.3" address="BITS:db"/>
    <symbol name="CCF.4" address="BITS:dc"/>
    <symbol name="CCON.5" address="BITS:dd"/>
    <symbol name="CR" address="BITS:de"/>
    <symbol name="CF" address="BITS:df"/>
    <symbol name="ACC.0" address="BITS:e0"/>
    <symbol name="ACC.1" address="BITS:e1"/>
    <symbol name="ACC.2" address="BITS:e2"/>
    <symbol name="ACC.3" address="BITS:e3"/>
    <symbol name="ACC.4" address="BITS:e4"/>
    <symbol name="ACC.5" address="BITS:e5"/>
    <symbol name="ACC.6" address="BITS:e6"/>
    <symbol name="ACC.7" address="BITS:e7"/>
    <symbol name="HIFLG.0" address="BITS:e8"/>
    <symbol name="HIFLG.1" address="BITS:e9"/>
    <symbol name="HIFLG.2" address="BITS:ea"/>
    <symbol name="HIFLG.3" address="BITS:eb"/>
    <symbol name="HIFLG.4" address="BITS:ec"/>
    <symbol name="HIFLG.5" address="BITS:ed"/>
    <symbol name="HIFLG.6" address="BITS:ee"/>
    <symbol name="HIFLG.7" address="BITS:ef"/>
    <symbol name="B.0" address="BITS:f0"/>
    <symbol name="B.1" address="BITS:f1"/>
    <symbol name="B.2" address="BITS:f2"/>
    <symbol name="B.3" address="BITS:f3"/>
    <symbol name="B.4" address="BITS:f4"/>
    <symbol name="B.5" address="BITS:f5"/>
    <symbol name="B.6" address="BITS:f6"/>
    <symbol name="B.7" address="BITS:f7"/>
    <symbol name="F8.0" address="BITS:f8"/>
    <symbol name="F8.1" address="BITS:f9"/>
    <symbol name="F8.2" address="BITS:fa"/>
    <symbol name="F8.3" address="BITS:fb"/>
    <symbol name="F8.4" address="BITS:fc"/>
    <symbol name="F8.5" address="BITS:fd"/>
    <symbol name="F8.6" address="BITS:fe"/>
    <symbol name="F8.7" address="BITS:ff"/>
    
  </default_symbols>
  
  <default_memory_blocks>
    <memory_block name="REG_BANK_1" start_address="RAM:7f0000" length="0x8" initialized="false"/>
    <memory_block name="REG_BANK_2" start_address="RAM:7f0008" length="0x8" initialized="false"/>
    <memory_block name="REG_BANK_3" start_address="RAM:7f0010" length="0x8" initialized="false"/>
    <memory_block name="REG_BANK_4" start_address="RAM:7f0018" length="0x8" initialized="false"/>
    <memory_block name="INTMEM" start_address="RAM:7f0020" length="0xe0" initialized="false"/>
    <memory_block name="EXTMEM" start_address="RAM:0" length="0x1000" initialized="false"/>
    <memory_block name="BITS" start_address="BITS:00" bit_mapped_address="RAM:7f0020" length="0x80"/>
    <memory_block name="SFR" start_address="SFR:80" length="0x80" initialized="false"/>
    <memory_block name="ESFR" start_address="ESFR:80" length="0x80" initialized="false"/>
    <memory_block name="EBITS" start_address="EBITS:00" bit_mapped_address="RAM:7f0020" length="0x80"/>
    
    <!--  BUG: SFR-BITS do not map properly since only every 8th SFR register is mapped (e.g., 0x80, 0x88, 0x90 ... 0xF0, 0xF8) -->
    <memory_block name="SFR-BITS" start_address="BITS:80" bit_mapped_address="SFR:80" length="0x80"/>
    <memory_block name="ESFR-BITS" start_address="EBITS:80" bit_mapped_address="ESFR:80" length="0x80"/>
    
  </default_memory_blocks>
  
</processor_spec>
