<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: Flash erase and burst write routines for both 908 and S08, tested and working in 8-bit Microcontrollers</title>
    <link>https://community.nxp.com/t5/8-bit-Microcontrollers/S08-Flash-question-programming-strange-results/m-p/184567#M13741</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;Carl,&lt;BR /&gt;&lt;BR /&gt;Thanks for the example.&amp;nbsp; I was porting my MCF5213 code to an S08, and it was driving me crazy.&lt;BR /&gt;&lt;BR /&gt;The CF has a different address range to write to flash, so I was writing to flash outside the RAM routine, that was legal and worked.&amp;nbsp; The S08 was different enough, I salvaged about 75% of my code, and yo filled in the blanks the data sheets leave.&lt;BR /&gt;&lt;BR /&gt;Alex&lt;BR /&gt;&lt;DIV&gt;&lt;/DIV&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Fri, 29 Feb 2008 10:58:42 GMT</pubDate>
    <dc:creator>alexod</dc:creator>
    <dc:date>2008-02-29T10:58:42Z</dc:date>
    <item>
      <title>S08 Flash question programming, strange results</title>
      <link>https://community.nxp.com/t5/8-bit-Microcontrollers/S08-Flash-question-programming-strange-results/m-p/184558#M13732</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Hi,&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I have had a read of programming flash for the S08 family (previously posted full working C code for 908 on this forum) which is in production and working fine.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;The S08 data sheet seems to be all over the place with information scattered through out (unlike 908 which was in order very clear).&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;This code is run out of ram, the code below works exactly as the code reads ( have tripple checked stepping through it), so I guess the concept of what I am doing must be the problem?&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;This code is to show the core concept.&lt;/SPAN&gt;&lt;BR /&gt;&lt;DIV&gt;&lt;DIV class="msg_source_code"&gt;&lt;DIV class="text_smallest"&gt;Code:&lt;/DIV&gt;&lt;PRE&gt;//--- Somewhere in main//20Mhz BusICGC1 = 0x78;ICGC2 = 0x30;while(!ICGS1_LOCK);&amp;nbsp;&amp;nbsp; //Wait for lock before allowing software to startupwhile(FSTAT_FACCERR) FSTAT_FACCERR = 1;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //Make sure error is cleared before setting up the divider&amp;nbsp;&amp;nbsp;&amp;nbsp; if(!FCDIV_DIVLD) FCDIV = 0b01001100;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //set fFCLK = about 200kHz unless already setupFPROT_FPOPEN = 1;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //No flash protectionFPROT_FPS = 1;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //No flash protection//Another Function moves this code to ram, and runs from there&amp;nbsp;&amp;nbsp; 
if(FSTAT_FACCERR) FSTAT_FACCERR = 1;&amp;nbsp; //Step 1 - If there is an access error, clear it
while(!FSTAT_FCBEF);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //Step 2 - Wait until ready to accept the command
ADDRESS_0xF300 = 0xFF;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Step 3 - Write to page for erase
FCMD = mPageErase;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Step 4 - Setup the erase command
FSTAT_FCBEF = 1;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Step 5 - Carry out command
if(FSTAT_FPVIOL || FSTAT_FACCERR) FSTAT_FACCERR = 1;&amp;nbsp; //Step 6 - If there is an access error, clear it, work out error handling later
while(FSTAT_FCCF);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Step 7 - Wait for the command complete flag&lt;/PRE&gt;&lt;/DIV&gt;&lt;BR /&gt;&amp;nbsp;&lt;BR /&gt;Now, what is REALLY strange is, this code actually works IF and only IF i do exactly this&lt;BR /&gt;Fresh burn the chip&lt;BR /&gt;run to cursor at step1&lt;BR /&gt;then run to cursor at the line after step 8&lt;BR /&gt;&lt;BR /&gt;If i move the memory window to watch address F300, it dosnt work, if i leave the memory window alone, it works.&lt;BR /&gt;&lt;BR /&gt;If i just hit run, it hangs at step 7 and causes Watchdog reset&lt;BR /&gt;&lt;BR /&gt;This software has also been causig me to have to unplug the USB on my Cyclone pro and refresh for the first time ever (not sure if its related, but its only since i have been playing with this code).&lt;BR /&gt;&lt;BR /&gt;&lt;/DIV&gt;&lt;SPAN&gt;Once i get this working i will post up this most basic C code to run either 908 or S08 processors&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Thanks,&lt;/SPAN&gt;&lt;BR /&gt;&lt;DIV&gt; &lt;/DIV&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 29 Oct 2020 09:35:36 GMT</pubDate>
      <guid>https://community.nxp.com/t5/8-bit-Microcontrollers/S08-Flash-question-programming-strange-results/m-p/184558#M13732</guid>
      <dc:creator>CarlFST60L_3rd</dc:creator>
      <dc:date>2020-10-29T09:35:36Z</dc:date>
    </item>
    <item>
      <title>Re: S08 Flash question programming, strange results</title>
      <link>https://community.nxp.com/t5/8-bit-Microcontrollers/S08-Flash-question-programming-strange-results/m-p/184559#M13733</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;DIV&gt;step 7 should be&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; while( &lt;FONT color="#ff0000"&gt;!&lt;/FONT&gt; FSTAT_FCCF);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 30 Jan 2008 21:12:23 GMT</pubDate>
      <guid>https://community.nxp.com/t5/8-bit-Microcontrollers/S08-Flash-question-programming-strange-results/m-p/184559#M13733</guid>
      <dc:creator>kef</dc:creator>
      <dc:date>2008-01-30T21:12:23Z</dc:date>
    </item>
    <item>
      <title>Re: S08 Flash question programming, strange results</title>
      <link>https://community.nxp.com/t5/8-bit-Microcontrollers/S08-Flash-question-programming-strange-results/m-p/184560#M13734</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;Hi Carl,&lt;BR /&gt;&lt;BR /&gt;Running a live memory window on flash while programming will cause flash memory accesses which will disrupt programming!&lt;BR /&gt;&lt;BR /&gt;&lt;DIV&gt;&lt;/DIV&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 31 Jan 2008 04:42:37 GMT</pubDate>
      <guid>https://community.nxp.com/t5/8-bit-Microcontrollers/S08-Flash-question-programming-strange-results/m-p/184560#M13734</guid>
      <dc:creator>peg</dc:creator>
      <dc:date>2008-01-31T04:42:37Z</dc:date>
    </item>
    <item>
      <title>Re: S08 Flash question programming, strange results</title>
      <link>https://community.nxp.com/t5/8-bit-Microcontrollers/S08-Flash-question-programming-strange-results/m-p/184561#M13735</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;Thanks for that input.&lt;BR /&gt;&lt;BR /&gt;The fix was simply to feed the watch dog during both while loops, close all three memory windows and add the ! to the last while loop.&lt;BR /&gt;&lt;BR /&gt;To me, this cop reset dosnt make sense as with the orginal code I can step the program to the erase function, run to the next line after erase function and it works every time! Obviously if this didnt work, I would have been thinking differently.&lt;BR /&gt;&lt;BR /&gt;I tried adding long delays just before and after flash erase routines (to see if i could simulate stopping before and after the function), but that didnt work so it appears to me that the cyclone pro has somthing to do with helping the orginal code to work... confusing. And it works with the memory windows open...&lt;BR /&gt;&lt;BR /&gt;I didnt want to have the two watchdog reset lines in the while loop to allow us to use the watchdog as some crude saftey i.e. if the while loops get stuck due to Flash problems, the processor resets and and will not attempt to write to flash until some user input.&lt;BR /&gt;&lt;BR /&gt;Now to do the flash rowwrite routines. Then I will post combined routines for page erase / burst write routines.&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 31 Jan 2008 06:13:03 GMT</pubDate>
      <guid>https://community.nxp.com/t5/8-bit-Microcontrollers/S08-Flash-question-programming-strange-results/m-p/184561#M13735</guid>
      <dc:creator>CarlFST60L_3rd</dc:creator>
      <dc:date>2008-01-31T06:13:03Z</dc:date>
    </item>
    <item>
      <title>Re: S08 Flash question programming, strange results</title>
      <link>https://community.nxp.com/t5/8-bit-Microcontrollers/S08-Flash-question-programming-strange-results/m-p/184562#M13736</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;I&gt;And it works with the memory windows open...&lt;BR /&gt;&lt;/I&gt;Well, if you did not have periodical on, it shouldn't try to read while running.&lt;BR /&gt;Also, when TT thinks it is flash, he won't refresh the display at all (at least the version I was using)&lt;BR /&gt;I once thought my HCS12 EERPOM write code was broke, because not matter what I did I could not get TT to re-read the memory, until I lied and said it was ram.&lt;BR /&gt;&lt;I&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;/I&gt;&lt;DIV&gt;&lt;/DIV&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 31 Jan 2008 06:37:19 GMT</pubDate>
      <guid>https://community.nxp.com/t5/8-bit-Microcontrollers/S08-Flash-question-programming-strange-results/m-p/184562#M13736</guid>
      <dc:creator>JimDon</dc:creator>
      <dc:date>2008-01-31T06:37:19Z</dc:date>
    </item>
    <item>
      <title>Re: S08 Flash question programming, strange results</title>
      <link>https://community.nxp.com/t5/8-bit-Microcontrollers/S08-Flash-question-programming-strange-results/m-p/184563#M13737</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;Yes, but it only works with the memory windows open if i follow specific steps, if just hit run, the code runs, but does not actually erase... I am confused.&lt;BR /&gt;&lt;BR /&gt;Will post the working code in a couple of days, hopefully someone will find a use for it.&lt;BR /&gt;&lt;DIV&gt;&lt;/DIV&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 31 Jan 2008 06:47:23 GMT</pubDate>
      <guid>https://community.nxp.com/t5/8-bit-Microcontrollers/S08-Flash-question-programming-strange-results/m-p/184563#M13737</guid>
      <dc:creator>CarlFST60L_3rd</dc:creator>
      <dc:date>2008-01-31T06:47:23Z</dc:date>
    </item>
    <item>
      <title>Re: S08 Flash question programming, strange results</title>
      <link>https://community.nxp.com/t5/8-bit-Microcontrollers/S08-Flash-question-programming-strange-results/m-p/184564#M13738</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;DIV&gt;&lt;/DIV&gt;Well, in theory anyway, if you have no periodical updates, and only a hardware break point set, the debugger should leave the chip alone.&lt;BR /&gt;&lt;BR /&gt;Are you using a BDM?&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;DIV&gt;&lt;/DIV&gt;&lt;BR /&gt;&lt;BR /&gt;Message Edited by JimDon on &lt;SPAN class="date_text"&gt;2008-01-30&lt;/SPAN&gt; &lt;SPAN class="time_text"&gt;10:29 PM&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 31 Jan 2008 11:26:37 GMT</pubDate>
      <guid>https://community.nxp.com/t5/8-bit-Microcontrollers/S08-Flash-question-programming-strange-results/m-p/184564#M13738</guid>
      <dc:creator>JimDon</dc:creator>
      <dc:date>2008-01-31T11:26:37Z</dc:date>
    </item>
    <item>
      <title>Re: S08 Flash question programming, strange results</title>
      <link>https://community.nxp.com/t5/8-bit-Microcontrollers/S08-Flash-question-programming-strange-results/m-p/184565#M13739</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;DIV&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;FONT size="2"&gt;Hello,&lt;/FONT&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;FONT size="2"&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;FONT size="2"&gt;My understanding is that the COP timer is enabled after a reset, but&amp;nbsp;does not increment during background debug mode, to prevent COP reset.&lt;/FONT&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;FONT size="2"&gt;During normal operation, it is possible for COP reset to occur within the flash erase period (20ms), unless precautions are taken.&lt;/FONT&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;FONT size="2"&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;FONT size="2"&gt;Regards,&lt;/FONT&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;FONT size="2"&gt;Mac&lt;/FONT&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;FONT size="2"&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;&lt;BR /&gt;&lt;BR /&gt;Message Edited by bigmac on &lt;SPAN class="date_text"&gt;2008-01-31&lt;/SPAN&gt; &lt;SPAN class="time_text"&gt;09:16 PM&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 31 Jan 2008 18:13:59 GMT</pubDate>
      <guid>https://community.nxp.com/t5/8-bit-Microcontrollers/S08-Flash-question-programming-strange-results/m-p/184565#M13739</guid>
      <dc:creator>bigmac</dc:creator>
      <dc:date>2008-01-31T18:13:59Z</dc:date>
    </item>
    <item>
      <title>Re: Flash erase and burst write routines for both 908 and S08, tested and working</title>
      <link>https://community.nxp.com/t5/8-bit-Microcontrollers/S08-Flash-question-programming-strange-results/m-p/184566#M13740</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;DIV&gt; &lt;/DIV&gt;&lt;DIV&gt; &lt;/DIV&gt;&lt;DIV&gt; &lt;/DIV&gt;&lt;P&gt;&lt;SPAN&gt;As promised here is some basic code to get flash running on either 908 and S08 family processors. The code is basic, not setup for final production version, just enough to give people a starting point! Hope this helps someone. Feel free to email updated etc to &lt;/SPAN&gt;&lt;A class="jive-link-email-small" href="mailto:carl@edsengineering.com.au" rel="nofollow noopener noreferrer noopener noreferrer" target="_blank"&gt;carl@edsengineering.com.au&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;WARNING: When using S08 with BDM connectect, you MUST close all three data windows or it will simply not work!&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Dont forget its time critical, you need to have your clock / bus speed work out, for this S08 its:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;DIV&gt;&lt;DIV class="msg_source_code"&gt;&lt;DIV class="text_smallest"&gt;Code:&lt;/DIV&gt;&lt;PRE&gt;
&lt;P&gt;&lt;SPAN style="color: #339966;"&gt;//-&amp;nbsp; -&amp;nbsp; -&amp;nbsp; -&amp;nbsp; -&amp;nbsp; -&amp;nbsp; -&amp;nbsp; -&amp;nbsp; -&amp;nbsp; -&amp;nbsp; -&amp;nbsp; -&amp;nbsp; -&amp;nbsp; -&amp;nbsp; -&amp;nbsp; -&amp;nbsp; -&amp;nbsp; -&amp;nbsp; -&amp;nbsp; -&amp;nbsp; -&amp;nbsp; -&amp;nbsp; -&amp;nbsp; -&amp;nbsp; -&amp;nbsp; -&amp;nbsp; -&amp;nbsp; -&amp;nbsp; -&amp;nbsp; -&amp;nbsp; -&amp;nbsp; -&amp;nbsp; -&amp;nbsp; -&amp;nbsp; -&amp;nbsp; -&amp;nbsp; -&amp;nbsp; -//&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;4Mhz external xtal, internal bus F = 20Mhz &lt;/P&gt;
&lt;P&gt;&lt;SPAN style="color: #339966;"&gt;//FLL is used (in FEE mode) to multiply the external 4 MHz oscillator up to 40-MHz to achieve 20 MHz bus frequency.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;void ConfigureClock(void)&lt;/P&gt;
&lt;P&gt;{&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="color: #339966;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /*ICGC1 =Bit 7 HGO 0 Configures oscillator for low-power operationBit 6 RANGE 1 Configures oscillator for high-frequency range; FLL presc&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ale factor is 1Bit 5 REFS 1 Requests an oscillatorBits 4:3 CLKS 11 FLL engaged, external reference clock modeBit 2 OSCSTEN 0 Disables&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; the oscillator in stop modesBit 1 LOCD 0 Loss-of-clock detection enabledBit 0 0 Unimplemented or reserved, always reads zero*/ &lt;/SPAN&gt; &lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ICGC1 = 0x78; &lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="color: #339966;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /*ICGC2 =Bit 7 LOLRE 0 Generates an interrupt request on loss of lockBit 6:4 MFD 011 Sets the MFD multiplication factor to 10Bit 3 LOCR&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; E 0 Generates an interrupt request on loss of clockBit 2:0 RFD 000 Sets the RFD division factor to ÷1*/&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ICGC2 = 0x30;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; while(!ICGS1_LOCK);&amp;nbsp; &lt;SPAN style="color: #339966;"&gt; //Wait for lock before allowing software to startup&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;}&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="color: #339966;"&gt;//-&amp;nbsp; -&amp;nbsp; -&amp;nbsp; -&amp;nbsp; -&amp;nbsp; -&amp;nbsp; -&amp;nbsp; -&amp;nbsp; -&amp;nbsp; -&amp;nbsp; -&amp;nbsp; -&amp;nbsp; -&amp;nbsp; -&amp;nbsp; -&amp;nbsp; -&amp;nbsp; -&amp;nbsp; -&amp;nbsp; -&amp;nbsp; -&amp;nbsp; -&amp;nbsp; -&amp;nbsp; -&amp;nbsp; -&amp;nbsp; -&amp;nbsp; -&amp;nbsp; -&amp;nbsp; -&amp;nbsp; -&amp;nbsp; -&amp;nbsp; -&amp;nbsp; -&amp;nbsp; -&amp;nbsp; -&amp;nbsp; -&amp;nbsp; -&amp;nbsp; -&amp;nbsp; -&lt;/SPAN&gt;&lt;/P&gt;
&lt;/PRE&gt;&lt;/DIV&gt;&lt;BR /&gt; For GP32 it is running off a 32Khz XTAL with PLL setup as&lt;P&gt;&lt;/P&gt;&lt;DIV&gt;&lt;DIV class="msg_source_code"&gt;&lt;DIV class="text_smallest"&gt;Code:&lt;/DIV&gt;&lt;PRE&gt;
&lt;P&gt;&lt;SPAN style="color: #339966;"&gt;//------------------------------------------------------------------------------------------------&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;void SetupPLL(void)&lt;/P&gt;
&lt;P&gt;{&amp;nbsp; &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; PCTL_PLLON = 0;&amp;nbsp;&amp;nbsp; &lt;SPAN style="color: #339966;"&gt;//Turn off PLL//PLL to run the internal clock at 4.9152MHz&lt;/SPAN&gt; &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; PCTL_VPR1 = 1; &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; PMSH = 0x02;&amp;nbsp; &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; PMSL = 0x58;&amp;nbsp; &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; PMRS = 0x80;&amp;nbsp;&amp;nbsp; &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; PCTL_PLLON = 1;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="color: #339966;"&gt;//Turn on PLL&lt;/SPAN&gt;&amp;nbsp; &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; PCTL_BCS = 1;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="color: #339966;"&gt;//Base clock select&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;}&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="color: #339966;"&gt;//------------------------------------------------------------------------------------------------&lt;/SPAN&gt;&lt;/P&gt;
&lt;/PRE&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;DIV class="msg_source_code"&gt;&lt;DIV class="text_smallest"&gt;Code:&lt;/DIV&gt;&lt;PRE&gt;
&lt;P&gt;&lt;SPAN style="color: #339966;"&gt;// flash.c&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="color: #339966;"&gt;/* ###################################################################**&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="color: #339966;"&gt;Filename&amp;nbsp; : FlashRoutines.c**&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="color: #339966;"&gt;Processor : MC9S08**&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="color: #339966;"&gt;FileFormat: V1.0**&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="color: #339966;"&gt;DataSheet :**&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="color: #339966;"&gt;Compiler&amp;nbsp; : CodeWarrior compiler 5.7.0**&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="color: #339966;"&gt;Date/Time : January 30, 2008 : 8am**&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="color: #339966;"&gt;Abstract&amp;nbsp; : **&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .****&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="color: #339966;"&gt;(c) Copyright EDS Engineering Pty Ltd 2007**&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="color: #339966;"&gt;http&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : &lt;A href="www.edsengineering.com.au**&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;" rel="nofollow noopener noreferrer noopener noreferrer" target="test_blank"&gt;www.edsengineering.com.au**&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/A&gt; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="color: #339966;"&gt;&lt;SPAN&gt;mail&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : &lt;/SPAN&gt;&lt;A class="jive-link-email-small" href="mailto:carl@edsengineering.com.au" rel="nofollow noopener noreferrer noopener noreferrer" target="_blank"&gt;carl@edsengineering.com.au&lt;/A&gt;&lt;SPAN&gt;****&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="color: #339966;"&gt;Notes for implmenting this code:**&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //This needs to be setup once on boot up &lt;/SPAN&gt; &lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P style="margin-bottom: 0.0001pt;"&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt;#ifdef _MC9S08&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Arial','sans-serif'; color: #339966;"&gt;//If using S08, setup bus&lt;/SPAN&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin-bottom: 0.0001pt;"&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt;while(FSTAT_FACCERR) &lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin-bottom: 0.0001pt;"&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FSTAT_FACCERR = 1;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Arial','sans-serif'; color: #339966;"&gt;//Make sure error is cleared before setting up the divider&lt;/SPAN&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin-bottom: 0.0001pt;"&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt;if(!FCDIV_DIVLD) FCDIV = initFCDIV; &lt;/SPAN&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Arial','sans-serif'; color: #339966;"&gt; //set fFCLK = about 200kHz (if not already setup i.e. on warm boot)&lt;/SPAN&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin-bottom: 0.0001pt;"&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt;FPROT_FPOPEN = 1;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Arial','sans-serif'; color: #339966;"&gt; //No flash protection&lt;/SPAN&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin-bottom: 0.0001pt;"&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt;FPROT_FPS = 1;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Arial','sans-serif'; color: #339966;"&gt;//No flash protection&lt;/SPAN&gt;&amp;nbsp; &lt;/P&gt;
&lt;P style="margin-bottom: 0.0001pt;"&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt;#endif&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin-bottom: 0.0001pt;"&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Arial','sans-serif'; color: #339966;"&gt;**** ###################################################################*/&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin-bottom: 0.0001pt;"&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt;#include "derivative.h"&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin-bottom: 0.0001pt;"&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt;#include "FlashRoutines.h"&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Arial','sans-serif'; color: #339966;"&gt;//Flash data table as required&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin-bottom: 0.0001pt;"&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Arial','sans-serif'; color: #339966;"&gt;//Need to add anything here to the entries section in the PRM file or you will not be able to use it&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin-bottom: 0.0001pt;"&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt;#pragma CONST_SEG &lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin-bottom: 0.0001pt;"&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt;UserFlashDataconst far byte FB01 = 0xC1;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin-bottom: 0.0001pt;"&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt;const far byte FB02 = 0xC4;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin-bottom: 0.0001pt;"&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt;#pragma CONST_SEG DEFAULT&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin-bottom: 0.0001pt;"&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt;#ifdef _MC9S08&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Arial','sans-serif'; color: #339966;"&gt;//Flash block protect register set&lt;/SPAN&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin-bottom: 0.0001pt;"&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt;const byte xFLBPR @ 0xFF7E = 0xFF;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Arial','sans-serif'; color: #339966;"&gt;// NOTHING IS PROTECTED!&lt;/SPAN&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin-bottom: 0.0001pt;"&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Arial','sans-serif'; color: #339966;"&gt;//xFLCR (Flash Control Register) This is not setup properly in the the GP32 header file for addressing far bytes&amp;nbsp; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin-bottom: 0.0001pt;"&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt;byte xFLCR @ 0xFE08; &lt;/SPAN&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Arial','sans-serif'; color: #339966;"&gt;//&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin-bottom: 0.0001pt;"&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Arial','sans-serif';"&gt;#define PGM&amp;nbsp;&amp;nbsp; 1 // Mask bits for FLCR&amp;nbsp; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin-bottom: 0.0001pt;"&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt;#define ERASE 2&amp;nbsp; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin-bottom: 0.0001pt;"&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt;#define MASS&amp;nbsp; 4&amp;nbsp; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin-bottom: 0.0001pt;"&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt;#define HVEN&amp;nbsp; 8&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin-bottom: 0.0001pt;"&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt;#endif&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin-bottom: 0.0001pt;"&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Arial','sans-serif'; color: #339966;"&gt;/*************************************************************************//**** &lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin-bottom: 0.0001pt;"&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Arial','sans-serif'; color: #339966;"&gt;Example / Test code *****//*************************************************************************/&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin-bottom: 0.0001pt;"&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Arial','sans-serif'; color: #339966;"&gt;//TEST CODE FOR MAIN LOOP&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin-bottom: 0.0001pt;"&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Arial','sans-serif'; color: #339966;"&gt;//This main loop simply writes 0x01 to 0x40 into the address of UserFlashData (see PRM file)&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin-bottom: 0.0001pt;"&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Arial','sans-serif'; color: #339966;"&gt;//PLease note, you must have the PRM setup correctly for this code&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin-bottom: 0.0001pt;"&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Arial','sans-serif'; color: #339966;"&gt;/*&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin-bottom: 0.0001pt;"&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt;byte&amp;nbsp; RAMData[64] = {0}; &lt;/SPAN&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Arial','sans-serif'; color: #339966;"&gt;//RAM Data that will be written to Flash&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin-bottom: 0.0001pt;"&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Arial','sans-serif'; color: #339966;"&gt;//TEST CODE &lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin-bottom: 0.0001pt;"&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt;byte&amp;nbsp; FlashData[64] = {0}; &lt;/SPAN&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Arial','sans-serif'; color: #339966;"&gt;//Area to write to (for testing only)&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin-bottom: 0.0001pt;"&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt;byte&amp;nbsp; *pRAMData = &amp;amp;RAMData[0];&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin-bottom: 0.0001pt;"&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt;byte&amp;nbsp; temp = 0x00;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin-bottom: 0.0001pt;"&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt;char&amp;nbsp; *pFlashData = (byte *)Start_User_Flash_Data;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Arial','sans-serif'; color: #339966;"&gt;//Point to the segment&lt;/SPAN&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin-bottom: 0.0001pt;"&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt;(ref to PRM)while(pRAMData != (RAMData+64)) *pRAMData++ = ++temp ;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Arial','sans-serif'; color: #339966;"&gt;//Fill RAMData with 0x01 to 0x40p&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin-bottom: 0.0001pt;"&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt;RAMData = &amp;amp;RAMData[0]; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin-bottom: 0.0001pt;"&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Arial','sans-serif'; color: #339966;"&gt;//Reset pointerDisableInterrupts; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin-bottom: 0.0001pt;"&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Arial','sans-serif'; color: #339966;"&gt;//Must disable interupts while writing to flash&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin-bottom: 0.0001pt;"&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt;CopyInRAM(); &lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin-bottom: 0.0001pt;"&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Arial','sans-serif'; color: #339966;"&gt;//Move required routines to RAM for running (cannot write to flash while PC is in flash!)&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin-bottom: 0.0001pt;"&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt;EraseRoutine(pFlashData); &lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin-bottom: 0.0001pt;"&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Arial','sans-serif'; color: #339966;"&gt;//Erase data before writing&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin-bottom: 0.0001pt;"&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt;WriteFlashRow(pRAMData, pFlashData);&amp;nbsp; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin-bottom: 0.0001pt;"&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Arial','sans-serif'; color: #339966;"&gt;//write data to flash&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin-bottom: 0.0001pt;"&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt;EnableInterrupts;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin-bottom: 0.0001pt;"&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt;for(;;) PTC ^= 1;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Arial','sans-serif'; color: #339966;"&gt;//Stop here, just toggle the output&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin-bottom: 0.0001pt;"&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt;}&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin-bottom: 0.0001pt;"&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Arial','sans-serif'; color: #339966;"&gt;*//*************************************************************************&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin-bottom: 0.0001pt;"&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Arial','sans-serif'; color: #339966;"&gt;//**** Copy routines to RAM (must execute from RAM!)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; *****&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin-bottom: 0.0001pt;"&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Arial','sans-serif'; color: #339966;"&gt;//*************************************************************************/&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin-bottom: 0.0001pt;"&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Arial','sans-serif'; color: #339966;"&gt;// This routine copies all the flash routines to ram as defined in// the PRM&amp;nbsp; file&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin-bottom: 0.0001pt;"&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Arial','sans-serif'; color: #339966;"&gt;// Add this to the last SEGMENTS entry in the .PRM file&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin-bottom: 0.0001pt;"&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Arial','sans-serif'; color: #339966;"&gt;// ROM_IMAGE = READ_ONLY 0xF000 TO 0xF2FF RELOCATE_TO 0x0200; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin-bottom: 0.0001pt;"&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Arial','sans-serif'; color: #339966;"&gt;//Where 0x0200 is the area in RAM free&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin-bottom: 0.0001pt;"&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Arial','sans-serif'; color: #339966;"&gt;// Add this line to the last entry under PLACMENT&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin-bottom: 0.0001pt;"&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Arial','sans-serif'; color: #339966;"&gt;// ToCopyToRAM &lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin-bottom: 0.0001pt;"&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Arial','sans-serif'; color: #339966;"&gt;INTO&amp;nbsp; ROM_IMAGE;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin-bottom: 0.0001pt;"&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Arial','sans-serif'; color: #339966;"&gt;// For more information see TN228 from freescale, or search on "SEGMENTS"&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin-bottom: 0.0001pt;"&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Arial','sans-serif'; color: #339966;"&gt;// or "RELOCATE_TO" in the code warrior help files.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin-bottom: 0.0001pt;"&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Arial','sans-serif'; color: #339966;"&gt;/*************************************************************************/&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin-bottom: 0.0001pt;"&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt;void CopyInRAM(void) &lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin-bottom: 0.0001pt;"&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt;{&amp;nbsp; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin-bottom: 0.0001pt;"&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; char *srcPtr, *dstPtr;&amp;nbsp; int count;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin-bottom: 0.0001pt;"&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; srcPtr = (byte *)Start_Copy_In_RAM;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin-bottom: 0.0001pt;"&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; dstPtr = (byte *)&amp;amp;EraseRoutine; &lt;/SPAN&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Arial','sans-serif'; color: #339966;"&gt;//Must be address of first routines&lt;/SPAN&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin-bottom: 0.0001pt;"&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for (count = 0; count &amp;lt; (int) Size_Copy_In_RAM; count++, dstPtr++, srcPtr++) &lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin-bottom: 0.0001pt;"&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; { &lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin-bottom: 0.0001pt;"&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; *dstPtr = *srcPtr;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin-bottom: 0.0001pt;"&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin-bottom: 0.0001pt;"&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt;} &lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin-bottom: 0.0001pt;"&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Arial','sans-serif'; color: #339966;"&gt; //WARNING: These function MUST be loaded into RAM before calling using&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin-bottom: 0.0001pt;"&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Arial','sans-serif'; color: #339966;"&gt; // CopyInRAM();&amp;nbsp; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin-bottom: 0.0001pt;"&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Arial','sans-serif'; color: #339966;"&gt;//Call prior to calling function in 'ToCopyToRAM'#pragma CODE_SEG ToCopyToRAM&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin-bottom: 0.0001pt;"&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Arial','sans-serif'; color: #339966;"&gt;/*************************************************************************/&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin-bottom: 0.0001pt;"&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Arial','sans-serif'; color: #339966;"&gt;/**** Erase a Block of FLASH Memory Subroutine&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; *****/&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin-bottom: 0.0001pt;"&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Arial','sans-serif'; color: #339966;"&gt;/*************************************************************************/&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin-bottom: 0.0001pt;"&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Arial','sans-serif'; color: #339966;"&gt;// This routine erases a block of FLASH // Make sure interupts are off, code is loaded into ram, simply point to any&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin-bottom: 0.0001pt;"&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Arial','sans-serif'; color: #339966;"&gt;// addres in the block you want to erase &lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin-bottom: 0.0001pt;"&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Arial','sans-serif'; color: #339966;"&gt;// Initializations required: &lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin-bottom: 0.0001pt;"&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Arial','sans-serif'; color: #339966;"&gt;// Pass Value:&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin-bottom: 0.0001pt;"&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Arial','sans-serif'; color: #339966;"&gt;// FlashRow = Any address in the block of flash to erase&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin-bottom: 0.0001pt;"&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Arial','sans-serif'; color: #339966;"&gt;// Values returned: &lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin-bottom: 0.0001pt;"&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Arial','sans-serif'; color: #339966;"&gt;// none &lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin-bottom: 0.0001pt;"&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Arial','sans-serif'; color: #339966;"&gt;//Note: S08 family is a 512 block!&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin-bottom: 0.0001pt;"&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Arial','sans-serif'; color: #339966;"&gt;/*************************************************************************/&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin-bottom: 0.0001pt;"&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt;void EraseRoutine (byte *FlashRow)&amp;nbsp; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin-bottom: 0.0001pt;"&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Arial','sans-serif'; color: #339966;"&gt;//WARNING: This name is part of CopyInRAM, do not add code above this{&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin-bottom: 0.0001pt;"&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Arial','sans-serif'; color: #339966;"&gt;//-&amp;nbsp;&amp;nbsp; -&amp;nbsp;&amp;nbsp; - -&amp;nbsp;&amp;nbsp; -&amp;nbsp;&amp;nbsp; -&amp;nbsp;&amp;nbsp; -&amp;nbsp;&amp;nbsp; - -&amp;nbsp;&amp;nbsp; -&amp;nbsp;&amp;nbsp; -&amp;nbsp;&amp;nbsp; -&amp;nbsp;&amp;nbsp; - -&amp;nbsp;&amp;nbsp; -&amp;nbsp;&amp;nbsp; -&amp;nbsp;&amp;nbsp; -&amp;nbsp;&amp;nbsp; - -&amp;nbsp;&amp;nbsp; -&amp;nbsp;&amp;nbsp; -&amp;nbsp;&amp;nbsp; -&amp;nbsp;&amp;nbsp; - -&amp;nbsp;&amp;nbsp; -&amp;nbsp;&amp;nbsp; -&amp;nbsp;&amp;nbsp; -&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin-bottom: 0.0001pt;"&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Arial','sans-serif'; color: #339966;"&gt;//Runs this code when running MC9S08 processors#ifdef _MC9S08&amp;nbsp; byte&amp;nbsp; tmpa; //Just used for chewing cycles&amp;nbsp; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin-bottom: 0.0001pt;"&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt;if(FSTAT_FACCERR) &lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin-bottom: 0.0001pt;"&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FSTAT_FACCERR = 1;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Arial','sans-serif'; color: #339966;"&gt;//Step 1 - If there is an access error, clear it&lt;/SPAN&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt; while(!FSTAT_FCBEF) &lt;/SPAN&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Arial','sans-serif'; color: #339966;"&gt;//Step 2 - Wait until ready to accept the command&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin-bottom: 0.0001pt;"&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; __RESET_WATCHDOG();&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Arial','sans-serif'; color: #339966;"&gt;//feed the dog&lt;/SPAN&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin-bottom: 0.0001pt;"&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt;*FlashRow = 0xFF; &lt;/SPAN&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Arial','sans-serif'; color: #339966;"&gt;// Step 3 - Write to any FLASH&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin-bottom: 0.0001pt;"&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt;FCMD = mPageErase; &lt;/SPAN&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Arial','sans-serif'; color: #339966;"&gt;// Step 4 - Setup the erase command&lt;/SPAN&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin-bottom: 0.0001pt;"&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt;FSTAT_FCBEF = 1; &lt;/SPAN&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Arial','sans-serif'; color: #339966;"&gt;// Step 5 - Carry out command&lt;/SPAN&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin: 0px 0px 0px 156pt; text-indent: -156pt;"&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt;__asm ror tmpa; &lt;/SPAN&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Arial','sans-serif'; color: #339966;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Step 6 - Chew some cycles as required by the data&amp;nbsp; sheet (atleast four cycles, this will do 5)&lt;/SPAN&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin-bottom: 0.0001pt;"&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt;if(FSTAT_FPVIOL || FSTAT_FACCERR) &lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin: 0px 0px 0px 156pt; text-indent: -156pt;"&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FSTAT_FACCERR = 1;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Arial','sans-serif'; color: #339966;"&gt;//Step 7 - If there is an access error, clear it, work out error handling later&lt;/SPAN&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin: 0px 0px 0px 12pt; text-indent: -12pt;"&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt;while(!FSTAT_FCCF) &lt;/SPAN&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Arial','sans-serif'; color: #339966;"&gt;// Step 8 - Wait for the command complete flag&lt;/SPAN&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; __RESET_WATCHDOG(); &lt;/SPAN&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Arial','sans-serif'; color: #339966;"&gt;//feed the dog&lt;/SPAN&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin-bottom: 0.0001pt;"&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt;#endif&amp;nbsp; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin-bottom: 0.0001pt;"&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Arial','sans-serif'; color: #339966;"&gt;//-&amp;nbsp;&amp;nbsp; -&amp;nbsp;&amp;nbsp; - -&amp;nbsp;&amp;nbsp; -&amp;nbsp;&amp;nbsp; -&amp;nbsp;&amp;nbsp; -&amp;nbsp;&amp;nbsp; - -&amp;nbsp;&amp;nbsp; -&amp;nbsp;&amp;nbsp; -&amp;nbsp;&amp;nbsp; -&amp;nbsp;&amp;nbsp; - -&amp;nbsp;&amp;nbsp; -&amp;nbsp;&amp;nbsp; -&amp;nbsp;&amp;nbsp; -&amp;nbsp;&amp;nbsp; -&amp;nbsp;&amp;nbsp; - -&amp;nbsp;&amp;nbsp; -&amp;nbsp;&amp;nbsp; -&amp;nbsp;&amp;nbsp; -&amp;nbsp;&amp;nbsp; - -&amp;nbsp;&amp;nbsp; -&amp;nbsp;&amp;nbsp; -&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin-bottom: 0.0001pt;"&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Arial','sans-serif'; color: #339966;"&gt;//Runs this code when running HC908 processors&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin-bottom: 0.0001pt;"&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt;#ifdef _HC908&amp;nbsp; xFLCR |= ERASE; &lt;/SPAN&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Arial','sans-serif'; color: #339966;"&gt;// Step 1 - Set erase and clear MASS erase&lt;/SPAN&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin: 0px 0px 0px 156pt; text-indent: -156pt;"&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; xFLCR &amp;amp;= (~MASS);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Arial','sans-serif'; color: #339966;"&gt;// MASS and xFLCR is actually xFLCR GP32 header is WRONG&lt;/SPAN&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin: 0px 0px 0px 12pt; text-indent: -12pt;"&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; __asm lda xFLBPR;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Arial','sans-serif'; color: #339966;"&gt; // Step 2 - read from Flash block protect register&lt;/SPAN&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt; *FlashRow = 0xFF; &lt;/SPAN&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Arial','sans-serif'; color: #339966;"&gt;// Step 3 - Write to any FLASH&lt;/SPAN&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin-bottom: 0.0001pt;"&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Delay(t10uS);&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Arial','sans-serif'; color: #339966;"&gt;// Step 4 - Delay 10uS&lt;/SPAN&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin-bottom: 0.0001pt;"&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; xFLCR |= HVEN; &lt;/SPAN&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Arial','sans-serif'; color: #339966;"&gt;// Step 5 - Set the HVEN bit&lt;/SPAN&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin-bottom: 0.0001pt;"&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Delay(t1mS);&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Arial','sans-serif'; color: #339966;"&gt;// Step 6 - Wait 1mS&amp;nbsp; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin-bottom: 0.0001pt;"&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; xFLCR &amp;amp;= (~ERASE); &lt;/SPAN&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Arial','sans-serif'; color: #339966;"&gt;// Step 7 - Clear the ERASE bit&lt;/SPAN&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin-bottom: 0.0001pt;"&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Delay(t5uS);&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Arial','sans-serif'; color: #339966;"&gt;// Step 8 - Wait min 5uS&lt;/SPAN&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin-bottom: 0.0001pt;"&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; xFLCR &amp;amp;= (~HVEN); &lt;/SPAN&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Arial','sans-serif'; color: #339966;"&gt; // Step 9 - Clear the HVEN bit&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin-bottom: 0.0001pt;"&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt;#endif &lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin-bottom: 0.0001pt;"&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Arial','sans-serif'; color: #339966;"&gt;//-&amp;nbsp;&amp;nbsp; -&amp;nbsp;&amp;nbsp; - -&amp;nbsp;&amp;nbsp; -&amp;nbsp;&amp;nbsp; -&amp;nbsp;&amp;nbsp; -&amp;nbsp;&amp;nbsp; - -&amp;nbsp;&amp;nbsp; -&amp;nbsp;&amp;nbsp; -&amp;nbsp;&amp;nbsp; -&amp;nbsp;&amp;nbsp; - -&amp;nbsp;&amp;nbsp; -&amp;nbsp;&amp;nbsp; -&amp;nbsp;&amp;nbsp; -&amp;nbsp;&amp;nbsp; -&amp;nbsp;&amp;nbsp; - -&amp;nbsp;&amp;nbsp; -&amp;nbsp;&amp;nbsp; -&amp;nbsp;&amp;nbsp; -&amp;nbsp;&amp;nbsp; - -&amp;nbsp;&amp;nbsp; -&amp;nbsp;&amp;nbsp; -&lt;/SPAN&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt;}&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin-bottom: 0.0001pt;"&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Arial','sans-serif'; color: #339966;"&gt;/*************************************************************************&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin-bottom: 0.0001pt;"&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Arial','sans-serif'; color: #339966;"&gt;//**** Flash Write Row *****&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin-bottom: 0.0001pt;"&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Arial','sans-serif'; color: #339966;"&gt;//*************************************************************************/&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin-bottom: 0.0001pt;"&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Arial','sans-serif'; color: #339966;"&gt;//Pass a pointer to the data in RAM to write, called pRAMData&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin-bottom: 0.0001pt;"&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Arial','sans-serif'; color: #339966;"&gt;//Pass a pointer to the Flash row to write to&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin-bottom: 0.0001pt;"&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Arial','sans-serif'; color: #339966;"&gt;//Warning, this WILL write the hole row i.e. 64 bytes, you must point to the START of a row!&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin-bottom: 0.0001pt;"&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt;void WriteFlashRow(byte* pRAMData, byte* pFlashData)&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin-bottom: 0.0001pt;"&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt;{&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin-bottom: 0.0001pt;"&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Arial','sans-serif'; color: #339966;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //- -&amp;nbsp;&amp;nbsp; -&amp;nbsp;&amp;nbsp; -&amp;nbsp;&amp;nbsp; -&amp;nbsp;&amp;nbsp; - -&amp;nbsp;&amp;nbsp; -&amp;nbsp;&amp;nbsp; -&amp;nbsp;&amp;nbsp; -&amp;nbsp;&amp;nbsp; - -&amp;nbsp;&amp;nbsp; -&amp;nbsp;&amp;nbsp; -&amp;nbsp;&amp;nbsp; -&amp;nbsp;&amp;nbsp; - -&amp;nbsp;&amp;nbsp; -&amp;nbsp;&amp;nbsp; -&amp;nbsp;&amp;nbsp; -&amp;nbsp;&amp;nbsp; - -&amp;nbsp;&amp;nbsp; -&amp;nbsp;&amp;nbsp; -&amp;nbsp;&amp;nbsp; -&amp;nbsp;&amp;nbsp; -&amp;nbsp;&amp;nbsp; -&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin-bottom: 0.0001pt;"&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Arial','sans-serif'; color: #339966;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //Runs this code when running MC9S08 processors&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin-bottom: 0.0001pt;"&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #ifdef _MC9S08&amp;nbsp; byte&amp;nbsp; tmpa;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Arial','sans-serif'; color: #339966;"&gt;//Just used for chewing cycles&lt;/SPAN&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin-bottom: 0.0001pt;"&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; byte StillData = 0x40;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Arial','sans-serif'; color: #339966;"&gt;//How many bytes to write (complete 64 bytes)&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin-bottom: 0.0001pt;"&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(FSTAT_FACCERR) &lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin-bottom: 0.0001pt;"&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FSTAT_FACCERR = 1;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Arial','sans-serif'; color: #339966;"&gt;//Step 1 - If there is an access error, clear&lt;/SPAN&gt; &lt;SPAN style="font-size: 10.0pt; font-family: 'Arial','sans-serif'; color: #339966;"&gt;it&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin-bottom: 0.0001pt;"&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Arial','sans-serif'; color: #339966;"&gt;//-&amp;nbsp;&amp;nbsp; -&amp;nbsp;&amp;nbsp; - -&amp;nbsp;&amp;nbsp; -&amp;nbsp;&amp;nbsp; -&amp;nbsp;&amp;nbsp; -&amp;nbsp;&amp;nbsp; - -&amp;nbsp;&amp;nbsp; -&amp;nbsp;&amp;nbsp; -&amp;nbsp;&amp;nbsp; -&amp;nbsp;&amp;nbsp; - -&amp;nbsp;&amp;nbsp; -&amp;nbsp;&amp;nbsp; -&amp;nbsp;&amp;nbsp; -&amp;nbsp;&amp;nbsp; -&amp;nbsp;&amp;nbsp; - -&amp;nbsp;&amp;nbsp; -&amp;nbsp;&amp;nbsp; -&amp;nbsp;&amp;nbsp; -&amp;nbsp;&amp;nbsp; - -&amp;nbsp;&amp;nbsp; -&amp;nbsp;&amp;nbsp; -&amp;nbsp;&amp;nbsp; -&amp;nbsp;&amp;nbsp; - -&amp;nbsp;&amp;nbsp; -&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin-bottom: 0.0001pt;"&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Arial','sans-serif'; color: #339966;"&gt;//Loop to program all bytes &lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin-bottom: 0.0001pt;"&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; while(StillData--)&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin-bottom: 0.0001pt;"&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; { &lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin-bottom: 0.0001pt;"&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; __RESET_WATCHDOG(); &lt;/SPAN&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Arial','sans-serif'; color: #339966;"&gt;//feed the dog&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin-bottom: 0.0001pt;"&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; while(!FSTAT_FCBEF) &lt;/SPAN&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Arial','sans-serif'; color: #339966;"&gt;//Step 2 - Wait until ready to accept the command&lt;/SPAN&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; __RESET_WATCHDOG(); &lt;/SPAN&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Arial','sans-serif'; color: #339966;"&gt;//feed the dog&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin-bottom: 0.0001pt;"&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; *pFlashData++ = *pRAMData++;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Arial','sans-serif'; color: #339966;"&gt;// Step 3 - Write RAM data to FLASH&lt;/SPAN&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FCMD = mBurstProg;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Arial','sans-serif'; color: #339966;"&gt;// Step 4 - Setup the burst program&lt;/SPAN&gt; &lt;SPAN style="font-size: 10.0pt; font-family: 'Arial','sans-serif'; color: #339966;"&gt;command&lt;/SPAN&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt; FSTAT_FCBEF = 1; &lt;/SPAN&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Arial','sans-serif'; color: #339966;"&gt; // Step 5 - Carry out command&lt;/SPAN&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin: 0px 0px 0px 156pt; text-indent: -156pt;"&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; __asm ror tmpa;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Arial','sans-serif'; color: #339966;"&gt;// Step 6 - Chew some cycles as required by the data sheet (atleast four cycles, this will do 5)&lt;/SPAN&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin: 0px 0px 0px 21.8pt; text-indent: -21.8pt;"&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(FSTAT_FPVIOL || FSTAT_FACCERR) &lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin: 0px 0px 0px 21.8pt; text-indent: -21.8pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="font-size: 10.0pt; font-family: 'Arial','sans-serif'; color: #339966;"&gt;//Step 7 - If there is an access error, clear it, and exit (work out error handling&amp;nbsp; later)&lt;/SPAN&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin: 0px 0px 0px 21.8pt; text-indent: -21.8pt;"&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; { &lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin: 0px 0px 0px 21.8pt; text-indent: -21.8pt;"&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FSTAT_FACCERR = 1;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin: 0px 0px 0px 21.8pt; text-indent: -21.8pt;"&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin: 0px 0px 0px 21.8pt; text-indent: -21.8pt;"&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin: 0px 0px 0px 21.8pt; text-indent: -21.8pt;"&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin: 0px 0px 0px 21.8pt; text-indent: -21.8pt;"&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; while(!FSTAT_FCCF) &lt;/SPAN&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Arial','sans-serif'; color: #339966;"&gt;// Step 8 - Wait for the command complete flag&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt;__RESET_WATCHDOG();&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Arial','sans-serif'; color: #339966;"&gt;//feed the dog&lt;/SPAN&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin: 0px 0px 0px 21.8pt; text-indent: -21.8pt;"&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Arial','sans-serif'; color: #339966;"&gt;//-&amp;nbsp;&amp;nbsp; -&amp;nbsp;&amp;nbsp; - -&amp;nbsp;&amp;nbsp; -&amp;nbsp;&amp;nbsp; -&amp;nbsp;&amp;nbsp; -&amp;nbsp;&amp;nbsp; - -&amp;nbsp;&amp;nbsp; -&amp;nbsp;&amp;nbsp; -&amp;nbsp;&amp;nbsp; -&amp;nbsp;&amp;nbsp; - -&amp;nbsp;&amp;nbsp; -&amp;nbsp;&amp;nbsp; -&amp;nbsp;&amp;nbsp; -&amp;nbsp;&amp;nbsp; -&amp;nbsp;&amp;nbsp; - -&amp;nbsp;&amp;nbsp; -&amp;nbsp;&amp;nbsp; -&amp;nbsp;&amp;nbsp; -&amp;nbsp;&amp;nbsp; - -&amp;nbsp;&amp;nbsp; -&amp;nbsp;&amp;nbsp; -&amp;nbsp;&amp;nbsp; -&amp;nbsp;&amp;nbsp; - -&amp;nbsp;&amp;nbsp; -&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin: 0px 0px 0px 21.8pt; text-indent: -21.8pt;"&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt;#endif&amp;nbsp; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin: 0px 0px 0px 21.8pt; text-indent: -21.8pt;"&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Arial','sans-serif'; color: #339966;"&gt;//-&amp;nbsp;&amp;nbsp; -&amp;nbsp;&amp;nbsp; - -&amp;nbsp;&amp;nbsp; -&amp;nbsp;&amp;nbsp; -&amp;nbsp;&amp;nbsp; -&amp;nbsp;&amp;nbsp; - -&amp;nbsp;&amp;nbsp; -&amp;nbsp;&amp;nbsp; -&amp;nbsp;&amp;nbsp; -&amp;nbsp;&amp;nbsp; - -&amp;nbsp;&amp;nbsp; -&amp;nbsp;&amp;nbsp; -&amp;nbsp;&amp;nbsp; -&amp;nbsp;&amp;nbsp; -&amp;nbsp;&amp;nbsp; - -&amp;nbsp;&amp;nbsp; -&amp;nbsp;&amp;nbsp; -&amp;nbsp;&amp;nbsp; -&amp;nbsp;&amp;nbsp; - -&amp;nbsp;&amp;nbsp; -&amp;nbsp;&amp;nbsp; -&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin: 0px 0px 0px 21.8pt; text-indent: -21.8pt;"&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt;//Runs this code when running HC908 processors#ifdef _HC908&amp;nbsp; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin: 0px 0px 0px 21.8pt; text-indent: -21.8pt;"&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt;byte&amp;nbsp; StillData = 0x40; &lt;/SPAN&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Arial','sans-serif'; color: #339966;"&gt;&amp;nbsp;&amp;nbsp; //How many bytes to write (complete 64 bytes) &lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin: 0px 0px 0px 21.8pt; text-indent: -21.8pt;"&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt;byte* pFlashFirstByte = pFlashData;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Arial','sans-serif'; color: #339966;"&gt;//Need to save this so we know when the row is&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin: 0px 0px 0px 21.8pt; text-indent: -21.8pt;"&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt;programmed&amp;nbsp; xFLCR |= PGM; &lt;/SPAN&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Arial','sans-serif'; color: #339966;"&gt;//Step 1 - Set PGM bit&lt;/SPAN&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin: 0px 0px 0px 21.8pt; text-indent: -21.8pt;"&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt;__asm lda xFLBPR; &lt;/SPAN&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Arial','sans-serif'; color: #339966;"&gt;// Step 2 - read from Flash block protect register&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin: 0px 0px 0px 169.5pt; text-indent: -169.5pt;"&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt;*pFlashFirstByte = 0xFF; &lt;/SPAN&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Arial','sans-serif'; color: #339966;"&gt;//Step 3 - Write to any address in the flash range we are about to write data to&lt;/SPAN&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin: 0px 0px 0px 21.8pt; text-indent: -21.8pt;"&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt;Delay(t10uS); &lt;/SPAN&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Arial','sans-serif'; color: #339966;"&gt;//Step 4 - Wait for time tNVS xFLCR |= HVEN&lt;/SPAN&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt;; &lt;/SPAN&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Arial','sans-serif'; color: #339966;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; //Step 5 - Set the HVEN enable Delay(t5uS);&lt;/SPAN&gt; &lt;SPAN style="font-size: 10.0pt; font-family: 'Arial','sans-serif'; color: #339966;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; //Step 6 - Wait for time&lt;/SPAN&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin: 0px 0px 0px 21.8pt; text-indent: -21.8pt;"&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt;//Step 7-8-9 - Write data to flash, delay 30uS, for entire row 0x40 bytes &lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin: 0px 0px 0px 21.8pt; text-indent: -21.8pt;"&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt;(routine takes 30.1uS while(StillData--)&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin: 0px 0px 0px 21.8pt; text-indent: -21.8pt;"&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; { &lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin: 0px 0px 0px 21.8pt; text-indent: -21.8pt;"&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; *pFlashData++ = *pRAMData++;&amp;nbsp; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin: 0px 0px 0px 156pt; text-indent: -156pt;"&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Delay(tPrg); //&lt;/SPAN&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Arial','sans-serif'; color: #339966;"&gt;Tprog MAX is 40uS, allowing for the delay in the loop, this works out to ~30.1uS &lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin: 0px 0px 0px 21.8pt; text-indent: -21.8pt;"&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin: 0px 0px 0px 21.8pt; text-indent: -21.8pt;"&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt;xFLCR &amp;amp;= (~PGM); &lt;/SPAN&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Arial','sans-serif'; color: #339966;"&gt; //Step 10 - Clear PGM bit &lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin: 0px 0px 0px 21.8pt; text-indent: -21.8pt;"&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt;Delay(t5uS); &lt;/SPAN&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Arial','sans-serif'; color: #339966;"&gt;//Step 11 - Delay for tNVH &lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin: 0px 0px 0px 21.8pt; text-indent: -21.8pt;"&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt;xFLCR &amp;amp;= (~HVEN); &lt;/SPAN&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Arial','sans-serif'; color: #339966;"&gt;//Step 12 - Clear HVEN&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin: 0px 0px 0px 21.8pt; text-indent: -21.8pt;"&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt;#endif&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin: 0px 0px 0px 21.8pt; text-indent: -21.8pt;"&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Arial','sans-serif'; color: #339966;"&gt; //-&amp;nbsp;&amp;nbsp; -&amp;nbsp;&amp;nbsp; - -&amp;nbsp;&amp;nbsp; -&amp;nbsp;&amp;nbsp; -&amp;nbsp;&amp;nbsp; -&amp;nbsp;&amp;nbsp; - -&amp;nbsp;&amp;nbsp; -&amp;nbsp;&amp;nbsp; -&amp;nbsp;&amp;nbsp; -&amp;nbsp;&amp;nbsp; - -&amp;nbsp;&amp;nbsp; -&amp;nbsp;&amp;nbsp; -&amp;nbsp;&amp;nbsp; -&amp;nbsp;&amp;nbsp; - -&amp;nbsp;&amp;nbsp; -&amp;nbsp;&amp;nbsp; -&amp;nbsp;&amp;nbsp; -&amp;nbsp;&amp;nbsp; - -&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt;}&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin: 0px 0px 0px 21.8pt; text-indent: -21.8pt;"&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Arial','sans-serif'; color: #339966;"&gt;/*************************************************************************&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin: 0px 0px 0px 21.8pt; text-indent: -21.8pt;"&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Arial','sans-serif'; color: #339966;"&gt;//**** Delay Routine *****&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin: 0px 0px 0px 21.8pt; text-indent: -21.8pt;"&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Arial','sans-serif'; color: #339966;"&gt;//*************************************************************************/&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin: 0px 0px 0px 21.8pt; text-indent: -21.8pt;"&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Arial','sans-serif'; color: #339966;"&gt;//Routine for delays above, not efficient at all, takes up time, and code space&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin: 0px 0px 0px 21.8pt; text-indent: -21.8pt;"&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Arial','sans-serif'; color: #339966;"&gt;&lt;SPAN&gt;//Please feel free to re write this and email to &lt;/SPAN&gt;&lt;A class="jive-link-email-small" href="mailto:carl@edsengineering.com.au" rel="nofollow noopener noreferrer noopener noreferrer" target="_blank"&gt;carl@edsengineering.com.au&lt;/A&gt;&lt;SPAN&gt; to be re posted&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin: 0px 0px 0px 21.8pt; text-indent: -21.8pt;"&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Arial','sans-serif'; color: #339966;"&gt;//Initializations required: &lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin: 0px 0px 0px 21.8pt; text-indent: -21.8pt;"&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Arial','sans-serif'; color: #339966;"&gt;//Pass in variable A = Delay Value &lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin: 0px 0px 0px 21.8pt; text-indent: -21.8pt;"&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Arial','sans-serif'; color: #339966;"&gt;//Values returned:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin: 0px 0px 0px 21.8pt; text-indent: -21.8pt;"&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Arial','sans-serif'; color: #339966;"&gt;//None &lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin: 0px 0px 0px 21.8pt; text-indent: -21.8pt;"&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Arial','sans-serif'; color: #339966;"&gt;/*************************************************************************/&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin: 0px 0px 0px 21.8pt; text-indent: -21.8pt;"&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt;void Delay (byte A)&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin: 0px 0px 0px 21.8pt; text-indent: -21.8pt;"&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt;{ &lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin: 0px 0px 0px 21.8pt; text-indent: -21.8pt;"&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; unsigned char count; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin: 0px 0px 0px 21.8pt; text-indent: -21.8pt;"&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; while (A!=0) &lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin: 0px 0px 0px 21.8pt; text-indent: -21.8pt;"&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; { &lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin: 0px 0px 0px 21.8pt; text-indent: -21.8pt;"&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for (count=0x03;count!=0;count--); &lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin: 0px 0px 0px 21.8pt; text-indent: -21.8pt;"&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; A--; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin: 0px 0px 0px 21.8pt; text-indent: -21.8pt;"&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin: 0px 0px 0px 21.8pt; text-indent: -21.8pt;"&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin: 0px 0px 0px 21.8pt; text-indent: -21.8pt;"&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt;}&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin: 0px 0px 0px 21.8pt; text-indent: -21.8pt;"&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt;#pragma CODE_SEG DEFAULT; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin: 0px 0px 0px 21.8pt; text-indent: -21.8pt;"&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Arial','sans-serif'; color: #339966;"&gt;//WARNING: Do not add code to be ran from RAM below here&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin: 12pt 0px 6pt;"&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Arial','sans-serif'; color: #339966;"&gt;// S08 PRM&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin: 12pt 0px 6pt;"&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Arial','sans-serif'; color: #339966;"&gt;/* This is a linker parameter file for the mc9s08gb32a */&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin: 12pt 0px 6pt;"&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt;NAMES END &lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin: 12pt 0px 6pt;"&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Arial','sans-serif'; color: #339966;"&gt;/* CodeWarrior will pass all the needed files to the linker by command line. But here you may add your own files too. */&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin: 12pt 0px 6pt;"&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt;SEGMENTS &lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin: 12pt 0px 6pt;"&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Arial','sans-serif'; color: #339966;"&gt;/* Here all RAM/ROM areas of the device are listed. Used in PLACEMENT below. */&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin: 12pt 0px 6pt;"&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt;Z_RAM&amp;nbsp; = READ_WRITE&amp;nbsp;&amp;nbsp; 0x0080 TO 0x00FF;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin: 12pt 0px 6pt;"&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt;RAM =&amp;nbsp; READ_WRITE&amp;nbsp;&amp;nbsp; 0x0100 TO 0x087F;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin: 12pt 0px 6pt;"&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt;ROMDATA&amp;nbsp; =&amp;nbsp; READ_ONLY 0x8000 TO 0x87FF;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin: 12pt 0px 6pt;"&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Arial','sans-serif'; color: #339966;"&gt;//2K reserved for flash constants &lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin: 12pt 0px 6pt;"&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt;ROM&amp;nbsp; =&amp;nbsp; READ_ONLY 0x8800 TO 0xEFFF;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin: 12pt 0px 6pt;"&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Arial','sans-serif'; color: #339966;"&gt;//Did end at 0xFFAF, moved back to make room for flash ram CDN 30/01/08&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin: 12pt 0px 6pt;"&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt;F_RAM&amp;nbsp; =&amp;nbsp; READ_ONLY 0xF300 TO 0xFFAF;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin: 12pt 0px 6pt;"&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Arial','sans-serif'; color: #339966;"&gt;//Added read write block for flash data storage CDN 30/01/08&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin: 12pt 0px 6pt;"&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt;ROM1&amp;nbsp; =&amp;nbsp; READ_ONLY 0xFFC0 TO 0xFFCB;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin: 12pt 0px 6pt;"&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt;ROM_IMAGE&amp;nbsp; =&amp;nbsp; READ_ONLY 0xF000 TO 0xF2FF RELOCATE_TO 0x0600; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin: 12pt 0px 6pt;"&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Arial','sans-serif'; color: #339966;"&gt;//CDN 30/01/08 9pm (0x0600 needs to be adjusted, beware of stack and normal ram) &lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin: 12pt 0px 6pt;"&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Arial','sans-serif'; color: #339966;"&gt;/* INTVECTS&amp;nbsp; =&amp;nbsp; READ_ONLY 0xFFCC TO 0xFFFF; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin: 12pt 0px 6pt;"&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Arial','sans-serif'; color: #339966;"&gt;Reserved for Interrupt Vectors */&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin: 12pt 0px 6pt;"&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt;ENDPLACEMENT &lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin: 12pt 0px 6pt;"&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Arial','sans-serif'; color: #339966;"&gt;/* Here all predefined and user segments are placed into the SEGMENTS defined above. */&lt;/SPAN&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; DEFAULT_RAM &lt;/SPAN&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Arial','sans-serif'; color: #339966;"&gt;/* non-zero page variables */&amp;nbsp; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin: 12pt 0px 6pt;"&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt;INTO&amp;nbsp; RAM;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin: 12pt 0px 6pt;"&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt;FlashData&amp;nbsp; INTO&amp;nbsp; ROMDATA; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin: 12pt 0px 6pt;"&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt;_PRESTART,&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Arial','sans-serif'; color: #339966;"&gt;/* startup code */&lt;/SPAN&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt;&amp;nbsp; STARTUP,&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Arial','sans-serif'; color: #339966;"&gt;/* startup data structures */&lt;/SPAN&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt;&amp;nbsp; ROM_VAR&lt;/SPAN&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Arial','sans-serif'; color: #339966;"&gt;,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* constant variables */&lt;/SPAN&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt;&amp;nbsp; STRINGS,&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Arial','sans-serif'; color: #339966;"&gt;/* string literals */&lt;/SPAN&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt;&amp;nbsp; VIRTUAL_TABLE_SEGMENT, &lt;/SPAN&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Arial','sans-serif'; color: #339966;"&gt;/* C++ virtual table segment */&lt;/SPAN&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt;&amp;nbsp;&amp;nbsp; DEFAULT_ROM,&amp;nbsp; COPY&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Arial','sans-serif'; color: #339966;"&gt; /* copy down information: how to initialize variables */&lt;/SPAN&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt;&amp;nbsp;&amp;nbsp; INTO&amp;nbsp; ROM; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin: 12pt 0px 6pt;"&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Arial','sans-serif'; color: #339966;"&gt;/* ,ROM1: To use "ROM1" as well, pass the option -OnB=b to the compiler */&lt;/SPAN&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; _DATA_ZEROPAGE,&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Arial','sans-serif'; color: #339966;"&gt;/* zero page variables */&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt;MY_ZEROPAGE INTO&amp;nbsp; Z_RAM; UserFlashData INTO&amp;nbsp; F_RAM; &lt;/SPAN&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Arial','sans-serif'; color: #339966;"&gt;//CDN 30/01/08 9pm&lt;/SPAN&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin: 12pt 0px 6pt;"&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt;ToCopyToRAM INTO&amp;nbsp; ROM_IMAGE;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Arial','sans-serif'; color: #339966;"&gt;//CDN 30/01/08 9pm&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin: 12pt 0px 6pt;"&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt;ENDSTACKSIZE 0x50VECTOR 0 _Startup &lt;/SPAN&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Arial','sans-serif'; color: #339966;"&gt;/* Reset vector: this is the default entry point for an application. */&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin: 12pt 0px 6pt;"&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Arial','sans-serif'; color: #339966;"&gt;//Required for flash routines&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin: 12pt 0px 6pt;"&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt;ENTRIES&amp;nbsp;&amp;nbsp; FB01&amp;nbsp;&amp;nbsp; FB02&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin: 12pt 0px 6pt;"&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt;END&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin: 12pt 0px 6pt;"&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif; color: #339966;"&gt;//Just setup this define below to chose which processor you are using, include flash.h in your main.c&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin: 12pt 0px 6pt;"&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Arial','sans-serif'; color: #339966;"&gt;// flash.h&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin: 12pt 0px 6pt;"&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt;#define _MC9S08&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Arial','sans-serif'; color: #339966;"&gt;//Use this to run for this family&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin: 12pt 0px 6pt;"&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt;// #define _HC908&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Arial','sans-serif'; color: #339966;"&gt;//Use this to run for this family#include "derivative.h"&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin: 12pt 0px 6pt;"&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt;#pragma CONST_SEG UserFlashData&amp;nbsp; extern const far byte FB01;&amp;nbsp; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin: 12pt 0px 6pt;"&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt;extern const far byte FB02;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin: 12pt 0px 6pt;"&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt;#pragma CONST_SEG DEFAULT&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin: 12pt 0px 6pt;"&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Arial','sans-serif'; color: #339966;"&gt;/*************************************************************************&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin: 12pt 0px 6pt;"&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Arial','sans-serif'; color: #339966;"&gt;//***** Program-Specific Defines *****&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin: 12pt 0px 6pt;"&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Arial','sans-serif'; color: #339966;"&gt;//*************************************************************************/&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin: 12pt 0px 6pt;"&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt;#ifdef _MC9S08&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Arial','sans-serif'; color: #339966;"&gt;//This must be setup based on the clock settings&lt;/SPAN&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin: 12pt 0px 6pt;"&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt;#define initFCDIV 0b01001100 &lt;/SPAN&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Arial','sans-serif'; color: #339966;"&gt;//FLASH clock divider (setup for 20Mhz Bus)&lt;/SPAN&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin: 12pt 0px 6pt;"&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Arial','sans-serif'; color: #339966;"&gt;// ||||||||&amp;nbsp; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin: 12pt 0px 6pt;"&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Arial','sans-serif'; color: #339966;"&gt;// |||||||+-DIV0 \&amp;nbsp; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin: 12pt 0px 6pt;"&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Arial','sans-serif'; color: #339966;"&gt;// ||||||+--DIV1 |&amp;nbsp; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin: 12pt 0px 6pt;"&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Arial','sans-serif'; color: #339966;"&gt;// |||||+---DIV2 &amp;gt;-- divide by (12+1)&amp;nbsp; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin: 12pt 0px 6pt;"&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Arial','sans-serif'; color: #339966;"&gt;// ||||+----DIV3 | BUSCLK/(8*12)~=(192.3Khz)&amp;nbsp; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin: 12pt 0px 6pt;"&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Arial','sans-serif'; color: #339966;"&gt;// |||+-----DIV4 |&amp;nbsp; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin: 12pt 0px 6pt;"&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Arial','sans-serif'; color: #339966;"&gt;// ||+------DIV5 /&amp;nbsp; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin: 12pt 0px 6pt;"&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Arial','sans-serif'; color: #339966;"&gt;// |+-------PRDIV8 -- divide (prescale) by 8&amp;nbsp; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin: 12pt 0px 6pt;"&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Arial','sans-serif'; color: #339966;"&gt;// +--------DIVLD --- read-only status&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin: 12pt 0px 6pt;"&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt;#endif&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin: 12pt 0px 6pt;"&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt;extern char __SEG_START_ToCopyToRAM[];&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Arial','sans-serif'; color: #339966;"&gt;//Used for copying code to RAMextern char&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin: 12pt 0px 6pt;"&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt; __SEG_SIZE_ToCopyToRAM[]; &lt;/SPAN&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Arial','sans-serif'; color: #339966;"&gt;//Used for copying code to RAMextern byte&lt;/SPAN&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt; __SEG_START_UserFlashData[];&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Arial','sans-serif'; color: #339966;"&gt;//Used for copying code to RAMextern byte&lt;/SPAN&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt; __SEG_SIZE_UserFlashData[]; &lt;/SPAN&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Arial','sans-serif'; color: #339966;"&gt;//Used for copying code to RAMvoid EraseRoutine&lt;/SPAN&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt; (byte*);void Delay (byte);&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin: 12pt 0px 6pt;"&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt;void CopyInRAM(void); &lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin: 12pt 0px 6pt;"&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt;void WriteFlashRow(byte*, byte*); &lt;/SPAN&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Arial','sans-serif'; color: #339966;"&gt;//Start_Copy_In_RAM refers to the begining of the segment&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin: 12pt 0px 6pt;"&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Arial','sans-serif'; color: #339966;"&gt;//ToCopyToRAM. This segment contains the functions after&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin: 12pt 0px 6pt;"&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Arial','sans-serif'; color: #339966;"&gt;//they have been copied to RAM.#define Start_Copy_In_RAM&lt;/SPAN&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt; __SEG_START_ToCopyToRAM&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin: 12pt 0px 6pt;"&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt;#define Size_Copy_In_RAM __SEG_SIZE_ToCopyToRAM&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin: 12pt 0px 6pt;"&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Arial','sans-serif'; color: #339966;"&gt;//Start_In_ROM refers to the begining of the segment&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin: 12pt 0px 6pt;"&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Arial','sans-serif'; color: #339966;"&gt;//ToCopyToRAM. This segment contains the functions in ROM.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin: 12pt 0px 6pt;"&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Arial','sans-serif'; color: #339966;"&gt;//refers to the beginining of the segment&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin: 12pt 0px 6pt;"&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt;#define Start_User_Flash_Data __SEG_START_UserFlashData&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin: 12pt 0px 6pt;"&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt;//UserFlashData start&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin: 12pt 0px 6pt;"&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt;#define User_Flash_Data __SEG_START_UserFlashData&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin: 12pt 0px 6pt;"&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt;//Size of UserFlashData as defined in PRM file&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin: 12pt 0px 6pt;"&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt;#define Size_User_Flash_Data __SEG_SIZE_UserFlashData&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin: 12pt 0px 6pt;"&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt;#ifdef _HC908&amp;nbsp; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin: 12pt 0px 6pt;"&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Arial','sans-serif'; color: #339966;"&gt;/*************************************************************************/ &lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin: 12pt 0px 6pt;"&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Arial','sans-serif'; color: #339966;"&gt;/***** FLASH Delay Equates *****/ /*************************************************************************/ &lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin: 12pt 0px 6pt;"&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Arial','sans-serif'; color: #339966;"&gt;// To setup these values use&amp;nbsp; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin: 12pt 0px 6pt;"&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Arial','sans-serif'; color: #339966;"&gt;// 30X + 31 cycles where X is the value u pass&amp;nbsp; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin: 12pt 0px 6pt;"&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Arial','sans-serif'; color: #339966;"&gt;// NOTE, when passing 0x00, it only takes 30 cycles, not 31.&amp;nbsp; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin: 12pt 0px 6pt;"&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Arial','sans-serif'; color: #339966;"&gt;// to take into account bus frequency&amp;nbsp; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin: 12pt 0px 6pt;"&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Arial','sans-serif'; color: #339966;"&gt;// (30X + 31) / Bus Frequency = Time&amp;nbsp; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin: 12pt 0px 6pt;"&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Arial','sans-serif'; color: #339966;"&gt;// GP32 Set at 4.9152uS&amp;nbsp;&amp;nbsp; //&amp;nbsp; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin: 12pt 0px 6pt;"&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Arial','sans-serif'; color: #339966;"&gt;// .XLS formula =((30*A2)+31) / $C$2&amp;nbsp; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin: 12pt 0px 6pt;"&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Arial','sans-serif'; color: #339966;"&gt;// Where A2 is a colum from 0 &amp;gt; 255, and Cell C2 = bus frequency in Hertz&amp;nbsp; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin: 12pt 0px 6pt;"&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Arial','sans-serif'; color: #339966;"&gt;// These results arnt correct, but they are close enough for the flash erase/write /*************************************************************************/&lt;/SPAN&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin: 12pt 0px 6pt;"&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt;#define t5uS&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x00&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Arial','sans-serif'; color: #339966;"&gt;// ~5uS (6.31uS)&lt;/SPAN&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin: 12pt 0px 6pt;"&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt;#define t10uS&amp;nbsp;&amp;nbsp; 0x01&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Arial','sans-serif'; color: #339966;"&gt;// ~10uS (12.4uS)&lt;/SPAN&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin: 12pt 0px 6pt;"&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt;#define tPrg&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x02&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Arial','sans-serif'; color: #339966;"&gt;// Used for delay in programming bytes&lt;/SPAN&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin: 12pt 0px 6pt;"&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt;#define t30uS&amp;nbsp;&amp;nbsp; 0x03&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Arial','sans-serif'; color: #339966;"&gt;// ~30uS (30.7uS)&lt;/SPAN&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin: 12pt 0px 6pt;"&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt;#define t1mS&amp;nbsp;&amp;nbsp;&amp;nbsp; 0xA3&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Arial','sans-serif'; color: #339966;"&gt;// 1ms (1.00mS)&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin: 12pt 0px 6pt;"&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt;#endif&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin: 12pt 0px 6pt;"&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt;//908 prm file&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Arial','sans-serif'; color: #339966;"&gt;/* This is a linker parameter file for the GP32 */&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt;NAMES END&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Arial','sans-serif'; color: #339966;"&gt;/* CodeWarrior will pass all the needed files to the linker by command line. But here you may add your own files too. */&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt;SEGMENTS&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Arial','sans-serif'; color: #339966;"&gt;/* Here all RAM/ROM areas of the device are listed. Used in PLACEMENT below. */&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt;ROM&amp;nbsp; =&amp;nbsp; READ_ONLY&amp;nbsp;&amp;nbsp;&amp;nbsp; 0xA000 TO 0xFDFF; &lt;/SPAN&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Arial','sans-serif'; color: #339966;"&gt;//Moved from 0x8000 to 0x9000 to make room for flash data storage&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin: 12pt 0px 6pt;"&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt;F_RAM&amp;nbsp; =&amp;nbsp; READ_ONLY 0x9000 TO 0x9FFF;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Arial','sans-serif'; color: #339966;"&gt;//Added read write block for flash data&amp;nbsp; storage&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin: 12pt 0px 6pt;"&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt;Z_RAM =&amp;nbsp; READ_WRITE 0x0040 TO 0x00FF;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin: 12pt 0px 6pt;"&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt;RAM&amp;nbsp; =&amp;nbsp; READ_WRITE 0x0100 TO 0x023F; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin: 12pt 0px 6pt;"&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt;ROM_IMAGE =&amp;nbsp; READ_ONLY 0xF000 TO 0xF2FF RELOCATE_TO 0x017A;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin: 12pt 0px 6pt;"&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Arial','sans-serif'; color: #339966;"&gt;//CDN 02/07/07 7pm&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin: 12pt 0px 6pt;"&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt;ENDPLACEMENT &lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin: 12pt 0px 6pt;"&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Arial','sans-serif'; color: #339966;"&gt;/* Here all predefined and user segments are placed into the SEGMENTS defined above. */&lt;/SPAN&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; DEFAULT_RAM&amp;nbsp;&amp;nbsp; INTO&amp;nbsp; RAM;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin: 12pt 0px 6pt;"&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt;DEFAULT_ROM, ROM_VAR, STRINGS&amp;nbsp; INTO ROM; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin: 12pt 0px 6pt;"&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Arial','sans-serif'; color: #339966;"&gt;/*&amp;nbsp; In case you want to use&amp;nbsp; as well, be sure the option -OnB=b is passed to the compiler. */&lt;/SPAN&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; _DATA_ZEROPAGE, MY_ZEROPAGE&amp;nbsp; INTO&amp;nbsp; Z_RAM;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin: 12pt 0px 6pt;"&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt;UserFlashData&amp;nbsp; INTO&amp;nbsp; F_RAM; &lt;/SPAN&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Arial','sans-serif'; color: #339966;"&gt;//CDN 02/07/07 10pm&lt;/SPAN&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin: 12pt 0px 6pt;"&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt;ToCopyToRAM INTO&amp;nbsp; ROM_IMAGE; &lt;/SPAN&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Arial','sans-serif'; color: #339966;"&gt;//CDN 02/07/07 7pm&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin: 12pt 0px 6pt;"&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt;ENDSTACKSIZE 0x50VECTOR 0 _Startup&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin: 12pt 0px 6pt;"&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Arial','sans-serif'; color: #339966;"&gt; /* Reset vector: this is the default entry point for an application. */&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin: 12pt 0px 6pt;"&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt;ENTRIES&amp;nbsp;&amp;nbsp; FB01&amp;nbsp;&amp;nbsp; FB02&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="margin: 12pt 0px 6pt;"&gt;&lt;SPAN style="font-size: 10pt; font-family: Arial, sans-serif;"&gt;END&lt;/SPAN&gt;&lt;/P&gt;
&lt;SPAN class="mce_paste_marker"&gt;&lt;/SPAN&gt;&lt;/PRE&gt;&lt;/DIV&gt;&lt;BR /&gt; &lt;/DIV&gt;&lt;P&gt;Message Edited by CarlFST60L_3rd on &lt;SPAN class="date_text"&gt;2008-01-31&lt;/SPAN&gt; &lt;SPAN class="time_text"&gt;11:31 AM&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Message Edited by CarlFST60L_3rd on &lt;SPAN class="date_text"&gt;2008-01-31&lt;/SPAN&gt; &lt;SPAN class="time_text"&gt;11:32 AM&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Message Edited by CarlFST60L_3rd on &lt;SPAN class="date_text"&gt;2008-01-31&lt;/SPAN&gt; &lt;SPAN class="time_text"&gt;11:33 AM&lt;/SPAN&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 29 Oct 2020 09:35:38 GMT</pubDate>
      <guid>https://community.nxp.com/t5/8-bit-Microcontrollers/S08-Flash-question-programming-strange-results/m-p/184566#M13740</guid>
      <dc:creator>CarlFST60L_3rd</dc:creator>
      <dc:date>2020-10-29T09:35:38Z</dc:date>
    </item>
    <item>
      <title>Re: Flash erase and burst write routines for both 908 and S08, tested and working</title>
      <link>https://community.nxp.com/t5/8-bit-Microcontrollers/S08-Flash-question-programming-strange-results/m-p/184567#M13741</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;Carl,&lt;BR /&gt;&lt;BR /&gt;Thanks for the example.&amp;nbsp; I was porting my MCF5213 code to an S08, and it was driving me crazy.&lt;BR /&gt;&lt;BR /&gt;The CF has a different address range to write to flash, so I was writing to flash outside the RAM routine, that was legal and worked.&amp;nbsp; The S08 was different enough, I salvaged about 75% of my code, and yo filled in the blanks the data sheets leave.&lt;BR /&gt;&lt;BR /&gt;Alex&lt;BR /&gt;&lt;DIV&gt;&lt;/DIV&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 29 Feb 2008 10:58:42 GMT</pubDate>
      <guid>https://community.nxp.com/t5/8-bit-Microcontrollers/S08-Flash-question-programming-strange-results/m-p/184567#M13741</guid>
      <dc:creator>alexod</dc:creator>
      <dc:date>2008-02-29T10:58:42Z</dc:date>
    </item>
    <item>
      <title>Re: Flash erase and burst write routines for both 908 and S08, tested and working</title>
      <link>https://community.nxp.com/t5/8-bit-Microcontrollers/S08-Flash-question-programming-strange-results/m-p/184568#M13742</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;DIV&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;FONT face="Times New Roman"&gt;&lt;/FONT&gt;&lt;P align="left"&gt;&lt;FONT face="Times New Roman"&gt;Hello all,&lt;BR /&gt;&lt;BR /&gt;Sorry for digging out this thread as I need to seek some advice fromt he expert here.&lt;BR /&gt;&lt;BR /&gt;Currently, I am using the HCS08DZ60 for my project and I have developed a codes based on the example below.&amp;nbsp; However, I found that the programming time used by Byte program and Burst program is exactly the same after testing.&amp;nbsp;&amp;nbsp; Hence I hope the experts here can clear my doubts.&lt;BR /&gt;&lt;BR /&gt;=================================================================================&lt;BR /&gt;&lt;FONT size="1"&gt;void WriteFlashRow(byte* pRAMData, byte* pFlashData){&lt;BR /&gt;//-&amp;nbsp;&amp;nbsp; -&amp;nbsp;&amp;nbsp; -&amp;nbsp;&amp;nbsp; -&amp;nbsp;&amp;nbsp; -&amp;nbsp;&amp;nbsp; -&amp;nbsp;&amp;nbsp; -&amp;nbsp;&amp;nbsp; -&amp;nbsp;&amp;nbsp; -&amp;nbsp;&amp;nbsp; -&amp;nbsp;&amp;nbsp; -&amp;nbsp;&amp;nbsp; -&amp;nbsp;&amp;nbsp; -&amp;nbsp;&amp;nbsp; -&amp;nbsp;&amp;nbsp; -&amp;nbsp;&amp;nbsp; -&amp;nbsp;&amp;nbsp; -&amp;nbsp;&amp;nbsp; -&amp;nbsp;&amp;nbsp; -&amp;nbsp;&amp;nbsp; -&amp;nbsp;&amp;nbsp; -&amp;nbsp;&amp;nbsp; -&amp;nbsp;&amp;nbsp; -&amp;nbsp;&amp;nbsp; -&amp;nbsp;&amp;nbsp; -&amp;nbsp;&amp;nbsp; -&amp;nbsp;&amp;nbsp; -&lt;BR /&gt;//Runs this code when running MC9S08 processors&lt;BR /&gt;#ifdef _MC9S08&lt;BR /&gt;&amp;nbsp; byte&amp;nbsp; tmpa;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //Just used for chewing cycles&lt;BR /&gt;&amp;nbsp; byte&amp;nbsp; StillData = 0x40;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //How many bytes to write (complete 64 bytes)&lt;BR /&gt;&amp;nbsp;&lt;BR /&gt;&amp;nbsp; if(FSTAT_FACCERR) FSTAT_FACCERR = 1;&amp;nbsp; //Step 1 - If there is an access error, clear it&lt;BR /&gt;//-&amp;nbsp;&amp;nbsp; -&amp;nbsp;&amp;nbsp; -&amp;nbsp;&amp;nbsp; -&amp;nbsp;&amp;nbsp; -&amp;nbsp;&amp;nbsp; -&amp;nbsp;&amp;nbsp; -&amp;nbsp;&amp;nbsp; -&amp;nbsp;&amp;nbsp; -&amp;nbsp;&amp;nbsp; -&amp;nbsp;&amp;nbsp; -&amp;nbsp;&amp;nbsp; -&amp;nbsp;&amp;nbsp; -&amp;nbsp;&amp;nbsp; -&amp;nbsp;&amp;nbsp; -&amp;nbsp;&amp;nbsp; -&amp;nbsp;&amp;nbsp; -&amp;nbsp;&amp;nbsp; -&amp;nbsp;&amp;nbsp; -&amp;nbsp;&amp;nbsp; -&amp;nbsp;&amp;nbsp; -&amp;nbsp;&amp;nbsp; -&amp;nbsp;&amp;nbsp; -&amp;nbsp;&amp;nbsp; -&amp;nbsp;&amp;nbsp; -&amp;nbsp;&amp;nbsp; -&amp;nbsp;&amp;nbsp; -&amp;nbsp;&amp;nbsp; -&amp;nbsp;&amp;nbsp; -&amp;nbsp;&amp;nbsp; -&amp;nbsp;&amp;nbsp; -&amp;nbsp;&amp;nbsp;&lt;BR /&gt;//Loop to program all bytes&lt;BR /&gt;while(StillData--){&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; __RESET_WATCHDOG();&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //feed the dog&amp;nbsp;&amp;nbsp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; while(!FSTAT_FCBEF)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //Step 2 - Wait until ready to accept the command&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; __RESET_WATCHDOG();&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //feed the dog&amp;nbsp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; *pFlashData++ = *pRAMData++;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Step 3 - Write RAM data to FLASH&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; FCMD = mBurstProg;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Step 4 - Setup the burst program command&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; FSTAT_FCBEF = 1;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Step 5 - Carry out command&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; __asm ror tmpa;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Step 6 - Chew some cycles as required by the data sheet (atleast four cycles, this will do 5)&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(FSTAT_FPVIOL || FSTAT_FACCERR)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //Step 7 - If there is an access error, clear it, and exit (work out error handling later)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FSTAT_FACCERR = 1;&amp;nbsp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp; }&lt;/FONT&gt;&lt;BR /&gt;=================================================================================&lt;BR /&gt;&lt;BR /&gt;I noticed that the example above is going to program 64 bytes to flash memory.&lt;BR /&gt;From the codes, I found that the mBurstProg command is lanuched&amp;nbsp;every times.&amp;nbsp; What I do not understand is that the Burst Program will program 32 bytes at a time, the why do we need to launch the Burst command every time?&lt;BR /&gt;If I need to program 128 bytes, does it mean I need to launch the command for 128 times?&amp;nbsp; Then it will be similar to the Byte program.&lt;BR /&gt;&lt;BR /&gt;I read the below statement from the user manual Section 4.5.5 Burst Program Executive.&lt;BR /&gt;&lt;FONT color="#6633FF"&gt;"The next sequential address selects a byte on the same burst block as the current byte being programmed. A burst block in this Flash memory consists of 32 bytes. A new burst block begins at each 32-byte address boundary."&lt;BR /&gt;&lt;/FONT&gt;&lt;BR /&gt;The statement mentioned about the boundary address, but from the above example code, I can only see the address is increasing sequentially.&amp;nbsp; Do we need to increment the address by 32 so as to program a new burst block?&amp;nbsp; For example, I have 128 bytes to be programmed (let say the starting address is 0x2B00), do I need to provide the address in this way: 0x2B00 (first burst block), 0x2B00+0x20 (second burst block), etc.?&lt;BR /&gt;&lt;BR /&gt;Hope the expert here can give me some pointers.&lt;BR /&gt;&lt;BR /&gt;Thank you ver much.&lt;BR /&gt;&lt;BR /&gt;Regards,&lt;BR /&gt;ivan&lt;/FONT&gt;&lt;/P&gt;&lt;/DIV&gt;&lt;BR /&gt;&lt;BR /&gt;Message Edited by Hello Ivan on &lt;SPAN class="date_text"&gt;2009-01-21&lt;/SPAN&gt; &lt;SPAN class="time_text"&gt;06:55 AM&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 21 Jan 2009 14:47:37 GMT</pubDate>
      <guid>https://community.nxp.com/t5/8-bit-Microcontrollers/S08-Flash-question-programming-strange-results/m-p/184568#M13742</guid>
      <dc:creator>HelloIvan</dc:creator>
      <dc:date>2009-01-21T14:47:37Z</dc:date>
    </item>
    <item>
      <title>Re: Flash erase and burst write routines for both 908 and S08, tested and working</title>
      <link>https://community.nxp.com/t5/8-bit-Microcontrollers/S08-Flash-question-programming-strange-results/m-p/184569#M13743</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;Hello Ivan, and welcome to the forum.&lt;BR /&gt;&lt;BR /&gt;The difference between burst programming and the programming of a single byte is the particular status flag used.&amp;nbsp; For burst programming, the FCBEF flag is tested, and when set a new burst command can be initiated.&amp;nbsp; However, when programming a single byte there should be a wait until the FCCF flag is set, which requires the additional cycles.&lt;BR /&gt;&lt;BR /&gt;You have actually omitted from your code the test of the FCCF flag for the final byte - not a good idea if you intend to immediately program another flash row or single byte.&lt;BR /&gt;&lt;BR /&gt;Since the maximum number of bytes that may be programmed during burst mode is 32, your function should limit to this amount, rather than the 64 bytes you currently have.&amp;nbsp; Presumably, as each flash row is completed, the internally generated high voltage is turned off, and then reapplied to the next row.&amp;nbsp; The additional wait for the FCCF flag should ensure this occurs.&amp;nbsp; To program 128 bytes, you would need to call the burst programming function four times.&amp;nbsp; The pointer parameter pFlashData will always require to be initialised to a 32 byte boundary.&lt;BR /&gt;&lt;BR /&gt;You have not specifically mentioned what you have done, but for the 'DZ60 device, if the data is to reside in flash memory, the burst programming function code will need to reside within the EEPROM block, or vice versa.&amp;nbsp; Alternatively, the function code could be transferred to RAM prior to its use.&lt;BR /&gt;&lt;BR /&gt;The following modified function code has been slightly streamlined, and includes the final FCCF flag test.&lt;BR /&gt;&lt;BR /&gt;&lt;FONT face="Courier New"&gt;byte WriteFlashRow( byte* pRAMData, byte* pFlashData)&lt;BR /&gt;{&lt;BR /&gt;#ifdef _MC9S08&lt;BR /&gt;&amp;nbsp;&amp;nbsp; byte&amp;nbsp; err_status;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; byte&amp;nbsp; StillData = 32;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Number of bytes to write&lt;BR /&gt;&amp;nbsp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; FSTAT = 0x30;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Clear FPVIOL &amp;amp; FACCERR flags&lt;BR /&gt;&amp;nbsp;&amp;nbsp; while (StillData--) {&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Loop to program all bytes&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; while (!FSTAT_FCBEF);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Wait until ready to accept command&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; *pFlashData++ = *pRAMData++;&amp;nbsp;&amp;nbsp; // Write RAM data to FLASH address&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FCMD = mBurstProg;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Setup burst program command&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FSTAT_FCBEF = 1;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Initiate command&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; __RESET_WATCHDOG();&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Delay 3+ cycles&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; err_status = FSTAT &amp;amp; 0x30;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (err_status)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return (err_status);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // If error, return error status&lt;BR /&gt;&amp;nbsp;&amp;nbsp; }&lt;BR /&gt;&amp;nbsp;&amp;nbsp; while (!FSTAT_FCCF);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Wait for command complete&lt;BR /&gt;&amp;nbsp;&amp;nbsp; return (err_status);&lt;BR /&gt;#endif&lt;BR /&gt;}&lt;/FONT&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;Regards,&lt;BR /&gt;Mac&lt;BR /&gt;&lt;DIV&gt;&lt;/DIV&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 22 Jan 2009 12:34:24 GMT</pubDate>
      <guid>https://community.nxp.com/t5/8-bit-Microcontrollers/S08-Flash-question-programming-strange-results/m-p/184569#M13743</guid>
      <dc:creator>bigmac</dc:creator>
      <dc:date>2009-01-22T12:34:24Z</dc:date>
    </item>
    <item>
      <title>Re: Flash erase and burst write routines for both 908 and S08, tested and working</title>
      <link>https://community.nxp.com/t5/8-bit-Microcontrollers/S08-Flash-question-programming-strange-results/m-p/184570#M13744</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Guys&lt;/P&gt;&lt;P&gt;I lost many hours trying&amp;nbsp;make my code works, and now finally I found the reason to not work.&lt;/P&gt;&lt;P&gt;Maybe it is usefull for others...and for me if some advice appears..&lt;IMG alt=":smileyhappy:" class="emoticon emoticon-smileyhappy" id="smileyhappy" src="http://freescale.i.lithium.com/i/smilies/16x16_smiley-happy.gif" title="Smiley Happy" /&gt;&lt;IMG alt=":smileyhappy:" class="emoticon emoticon-smileyhappy" id="smileyhappy" src="http://freescale.i.lithium.com/i/smilies/16x16_smiley-happy.gif" title="Smiley Happy" /&gt;&lt;/P&gt;&lt;P&gt;My flash routines writes data either from RAM as FLASH:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;void Internal_flash::write(uint32 flash_address_write,uint8 *p_in,uint16 size)&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I´m running this routine in RAM memory....&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;It was working fine until I decide to make use of burst mode.&lt;/P&gt;&lt;P&gt;For this mode, inside the main loop, we monitor the EMPTY buffer flag (FSTAT_FCBEF)&amp;nbsp; and not the COMPLETE process flag (FSTAT_FCCF).&lt;/P&gt;&lt;P&gt;After mani attempts I realize that only data from RAM area was successfully transfered to thye flash, while data from FLASH were not copied....&lt;/P&gt;&lt;P&gt;So I concluded the reason is I´m&amp;nbsp;reading the flash while burning it.&lt;/P&gt;&lt;P&gt;I thought I could make it, because:&lt;/P&gt;&lt;P&gt;0x2400 = destiny&lt;/P&gt;&lt;P&gt;0x2E00 =&amp;nbsp;source&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;that is, different pages....&lt;/P&gt;&lt;P&gt;ColdFires allows this kind of operation...&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Well, the solution I adopted is to continue to monitor COMPLETE process flasg.....&lt;/P&gt;&lt;P&gt;Have someone a&amp;nbsp;experience like this?&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thanks&lt;/P&gt;&lt;P&gt;Ricardo Raupp&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 26 Oct 2009 02:35:55 GMT</pubDate>
      <guid>https://community.nxp.com/t5/8-bit-Microcontrollers/S08-Flash-question-programming-strange-results/m-p/184570#M13744</guid>
      <dc:creator>Ricardo_RauppV</dc:creator>
      <dc:date>2009-10-26T02:35:55Z</dc:date>
    </item>
    <item>
      <title>Re: Flash erase and burst write routines for both 908 and S08, tested and working</title>
      <link>https://community.nxp.com/t5/8-bit-Microcontrollers/S08-Flash-question-programming-strange-results/m-p/184571#M13745</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hello Ricardo,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;You do not say which HCS08 device you are using, however most devices provide only a single flash array (the 'DZ60 device is an exception).&amp;nbsp; With a single array, access to all flash is disabled during the erase and programming process.&amp;nbsp; Therefore, the portion of the code that executes whilst high voltage is internally applied to the flash array must be RAM resident.&amp;nbsp; Once the FCCF flag is set, high voltage is no longer applied, and flash access is available.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;When using the burst programming command, when the FCBEF flag becomes set, ready for the next data byte, the previous flash command has not completed, and flash access is still unavailable.&amp;nbsp; Therefore more of the code needs to be RAM resident in this case, plus the data block to be programmed.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;For very small HCS08 devices, the additional RAM requirement for burst programming may not be readily available.&amp;nbsp; The small reduction in total programming time for burst programming, compared with byte-by-byte programming, will not be justified in many cases, especially if the flash sector needs to be first erased (20 milliseconds typical).&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Regards,&lt;/P&gt;&lt;P&gt;Mac&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 26 Oct 2009 14:36:38 GMT</pubDate>
      <guid>https://community.nxp.com/t5/8-bit-Microcontrollers/S08-Flash-question-programming-strange-results/m-p/184571#M13745</guid>
      <dc:creator>bigmac</dc:creator>
      <dc:date>2009-10-26T14:36:38Z</dc:date>
    </item>
    <item>
      <title>Re: Flash erase and burst write routines for both 908 and S08, tested and working</title>
      <link>https://community.nxp.com/t5/8-bit-Microcontrollers/S08-Flash-question-programming-strange-results/m-p/184572#M13746</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Bigmac&lt;/P&gt;&lt;P&gt;Sorry..the mcu is a QE128....&lt;/P&gt;&lt;P&gt;Very thanks for your help !!!!&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Ricardo Raupp&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 26 Oct 2009 19:04:12 GMT</pubDate>
      <guid>https://community.nxp.com/t5/8-bit-Microcontrollers/S08-Flash-question-programming-strange-results/m-p/184572#M13746</guid>
      <dc:creator>Ricardo_RauppV</dc:creator>
      <dc:date>2009-10-26T19:04:12Z</dc:date>
    </item>
    <item>
      <title>Re: Flash erase and burst write routines for both 908 and S08, tested and working</title>
      <link>https://community.nxp.com/t5/8-bit-Microcontrollers/S08-Flash-question-programming-strange-results/m-p/184573#M13747</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;HI -&lt;/P&gt;&lt;P&gt;Forgive my ignorance but how do I expand the view of that posted code from the one line with a scroll bar?&lt;/P&gt;&lt;P&gt;I copied using shift/end and pasted , but it is not formatted.&lt;/P&gt;&lt;P&gt;thanks&lt;/P&gt;&lt;P&gt;Russell&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sun, 27 Jan 2013 15:11:13 GMT</pubDate>
      <guid>https://community.nxp.com/t5/8-bit-Microcontrollers/S08-Flash-question-programming-strange-results/m-p/184573#M13747</guid>
      <dc:creator>russellsher</dc:creator>
      <dc:date>2013-01-27T15:11:13Z</dc:date>
    </item>
  </channel>
</rss>

