<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="http://bettyhacks.com/wiki/skins/common/feed.css?303"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>http://bettyhacks.com/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=84.56.189.170</id>
		<title>Bettyhacks.com - Hack BettyTV-Remote - User contributions [en]</title>
		<link rel="self" type="application/atom+xml" href="http://bettyhacks.com/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=84.56.189.170"/>
		<link rel="alternate" type="text/html" href="http://bettyhacks.com/wiki/index.php?title=Special:Contributions/84.56.189.170"/>
		<updated>2026-05-06T09:01:40Z</updated>
		<subtitle>User contributions</subtitle>
		<generator>MediaWiki 1.18.2</generator>

	<entry>
		<id>http://bettyhacks.com/wiki/index.php?title=Flash_access</id>
		<title>Flash access</title>
		<link rel="alternate" type="text/html" href="http://bettyhacks.com/wiki/index.php?title=Flash_access"/>
				<updated>2007-09-11T06:26:28Z</updated>
		
		<summary type="html">&lt;p&gt;84.56.189.170: Undo revision 252 by 84.61.183.35 (Talk)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;these are the original routines to erase a sector in flash, and to write data to it.&lt;br /&gt;
&lt;br /&gt;
first the sector erase routine, the adress is register R0&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
CS0:80001BBC eraseFlashSector                        ; DATA XREF: CS0:off_80000878 o&lt;br /&gt;
CS0:80001BBC                 LDR     R2, =0xAAA&lt;br /&gt;
CS0:80001BC0                 BIC     R3, R0, #0xFF0&lt;br /&gt;
CS0:80001BC4                 BIC     R3, R3, #0xF&lt;br /&gt;
CS0:80001BC8                 LDR     R1, =0x554&lt;br /&gt;
CS0:80001BCC                 MOV     R12, #0xAA ; '¬'&lt;br /&gt;
CS0:80001BD0                 STRH    R12, [R3,R2]&lt;br /&gt;
CS0:80001BD4                 MOV     R12, #0x55 ; 'U'&lt;br /&gt;
CS0:80001BD8                 STRH    R12, [R3,R1]&lt;br /&gt;
CS0:80001BDC                 MOV     R12, #0x80 ; 'Ç'&lt;br /&gt;
CS0:80001BE0                 STRH    R12, [R3,R2]&lt;br /&gt;
CS0:80001BE4                 MOV     R12, #0xAA ; '¬'&lt;br /&gt;
CS0:80001BE8                 STRH    R12, [R3,R2]&lt;br /&gt;
CS0:80001BEC                 MOV     R2, #0x55 ; 'U'&lt;br /&gt;
CS0:80001BF0                 STRH    R2, [R3,R1]&lt;br /&gt;
CS0:80001BF4                 MOV     R3, #0x30 ; '0'&lt;br /&gt;
CS0:80001BF8                 STRH    R3, [R0]&lt;br /&gt;
CS0:80001BFC                 LDRH    R2, [R0]&lt;br /&gt;
CS0:80001C00                 LDRH    R3, [R0]&lt;br /&gt;
CS0:80001C04                 AND     R2, R2, #0x44&lt;br /&gt;
CS0:80001C08                 AND     R3, R3, #0x44&lt;br /&gt;
CS0:80001C0C                 CMP     R2, R3&lt;br /&gt;
CS0:80001C10                 LDREQ   R3, =0x2040004&lt;br /&gt;
CS0:80001C14                 BEQ     loc_80001C88&lt;br /&gt;
CS0:80001C18&lt;br /&gt;
CS0:80001C18 loc_80001C18                            ; CODE XREF: eraseFlashSector+6C j&lt;br /&gt;
CS0:80001C18                 LDRH    R3, [R0]&lt;br /&gt;
CS0:80001C1C                 MOV     R3, R3,LSR#3&lt;br /&gt;
CS0:80001C20                 EOR     R3, R3, #1&lt;br /&gt;
CS0:80001C24                 ANDS    R3, R3, #1&lt;br /&gt;
CS0:80001C28                 BNE     loc_80001C18&lt;br /&gt;
CS0:80001C2C                 MOV     R1, R3&lt;br /&gt;
CS0:80001C30&lt;br /&gt;
CS0:80001C30 loc_80001C30                            ; CODE XREF: eraseFlashSector+C4 j&lt;br /&gt;
CS0:80001C30                 LDRH    R2, [R0]&lt;br /&gt;
CS0:80001C34                 LDRH    R3, [R0]&lt;br /&gt;
CS0:80001C38                 AND     R2, R2, #0x44&lt;br /&gt;
CS0:80001C3C                 AND     R3, R3, #0x44&lt;br /&gt;
CS0:80001C40                 CMP     R2, R3&lt;br /&gt;
CS0:80001C44                 BEQ     loc_80001C84&lt;br /&gt;
CS0:80001C48                 LDRH    R3, [R0]&lt;br /&gt;
CS0:80001C4C                 TST     R3, #0x20&lt;br /&gt;
CS0:80001C50                 BEQ     loc_80001C7C&lt;br /&gt;
CS0:80001C54                 LDRH    R2, [R0]&lt;br /&gt;
CS0:80001C58                 LDRH    R3, [R0]&lt;br /&gt;
CS0:80001C5C                 AND     R2, R2, #0x44&lt;br /&gt;
CS0:80001C60                 AND     R3, R3, #0x44&lt;br /&gt;
CS0:80001C64                 CMP     R2, R3&lt;br /&gt;
CS0:80001C68                 MOVNE   R12, #0xF0 ; '­'&lt;br /&gt;
CS0:80001C6C                 LDRNE   R3, =0x2040004&lt;br /&gt;
CS0:80001C70                 STRNEH  R12, [R0]&lt;br /&gt;
CS0:80001C74                 BNE     loc_80001C88&lt;br /&gt;
CS0:80001C78                 B       loc_80001C84&lt;br /&gt;
CS0:80001C7C ; ---------------------------------------------------------------------------&lt;br /&gt;
CS0:80001C7C&lt;br /&gt;
CS0:80001C7C loc_80001C7C                            ; CODE XREF: eraseFlashSector+94 j&lt;br /&gt;
CS0:80001C7C                 CMP     R1, #0&lt;br /&gt;
CS0:80001C80                 BEQ     loc_80001C30&lt;br /&gt;
CS0:80001C84&lt;br /&gt;
CS0:80001C84 loc_80001C84                            ; CODE XREF: eraseFlashSector+88 j&lt;br /&gt;
CS0:80001C84                                         ; eraseFlashSector+BC j&lt;br /&gt;
CS0:80001C84                 MOV     R3, #0&lt;br /&gt;
CS0:80001C88&lt;br /&gt;
CS0:80001C88 loc_80001C88                            ; CODE XREF: eraseFlashSector+58 j&lt;br /&gt;
CS0:80001C88                                         ; eraseFlashSector+B8 j&lt;br /&gt;
CS0:80001C88                 MOV     R0, R3&lt;br /&gt;
CS0:80001C8C                 RET&lt;br /&gt;
CS0:80001C8C ; End of function eraseFlashSector&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and here is the flash write function, again, register R0 to pass the destination adress, R1 &lt;br /&gt;
is the source address of the data to be written, R2 the number of bytes or words to be written.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
CS0:80001C9C programFlash                            ; DATA XREF: CS0:off_8000087C o&lt;br /&gt;
CS0:80001C9C                                         ; CS0:off_800009A0 o&lt;br /&gt;
CS0:80001C9C                 STMFD   SP!, {R4,R5,LR}&lt;br /&gt;
CS0:80001CA0                 MOV     R12, R1&lt;br /&gt;
CS0:80001CA4                 SUBS    LR, R2, #0&lt;br /&gt;
CS0:80001CA8                 MOV     R5, #0&lt;br /&gt;
CS0:80001CAC&lt;br /&gt;
CS0:80001CAC loc_80001CAC                            ; CODE XREF: programFlash+8C j&lt;br /&gt;
CS0:80001CAC                 BLE     loc_80001D2C&lt;br /&gt;
CS0:80001CB0                 LDR     R3, =0xAAA&lt;br /&gt;
CS0:80001CB4                 BIC     R2, R0, #0xFF0&lt;br /&gt;
CS0:80001CB8                 BIC     R2, R2, #0xF&lt;br /&gt;
CS0:80001CBC                 MOV     R1, #0xAA ; '¬'&lt;br /&gt;
CS0:80001CC0                 STRH    R1, [R2,R3]&lt;br /&gt;
CS0:80001CC4                 LDR     R1, =0x554&lt;br /&gt;
CS0:80001CC8                 MOV     R4, #0x55 ; 'U'&lt;br /&gt;
CS0:80001CCC                 STRH    R4, [R2,R1]&lt;br /&gt;
CS0:80001CD0                 MOV     R1, #0xA0 ; 'á'&lt;br /&gt;
CS0:80001CD4                 STRH    R1, [R2,R3]&lt;br /&gt;
CS0:80001CD8                 LDRH    R1, [R12]&lt;br /&gt;
CS0:80001CDC                 MOV     R4, #0&lt;br /&gt;
CS0:80001CE0                 STRH    R1, [R0]&lt;br /&gt;
CS0:80001CE4                 AND     R1, R1, #0x80&lt;br /&gt;
CS0:80001CE8&lt;br /&gt;
CS0:80001CE8 loc_80001CE8                            ; CODE XREF: programFlash+78 j&lt;br /&gt;
CS0:80001CE8                 LDRH    R2, [R0]&lt;br /&gt;
CS0:80001CEC                 AND     R3, R2, #0x80&lt;br /&gt;
CS0:80001CF0                 CMP     R3, R1&lt;br /&gt;
CS0:80001CF4                 MOV     R2, R2,LSL#16&lt;br /&gt;
CS0:80001CF8                 BEQ     loc_80001D18&lt;br /&gt;
CS0:80001CFC                 TST     R2, #0x200000&lt;br /&gt;
CS0:80001D00                 LDRNE   R5, =0x2040005&lt;br /&gt;
CS0:80001D04                 MOVNE   R3, #0xF0 ; '­'&lt;br /&gt;
CS0:80001D08                 STRNEH  R3, [R0]&lt;br /&gt;
CS0:80001D0C                 BNE     loc_80001D18&lt;br /&gt;
CS0:80001D10                 CMP     R4, #0&lt;br /&gt;
CS0:80001D14                 BEQ     loc_80001CE8&lt;br /&gt;
CS0:80001D18&lt;br /&gt;
CS0:80001D18 loc_80001D18                            ; CODE XREF: programFlash+5C j&lt;br /&gt;
CS0:80001D18                                         ; programFlash+70 j&lt;br /&gt;
CS0:80001D18                 SUB     LR, LR, #1&lt;br /&gt;
CS0:80001D1C                 CMP     LR, #0&lt;br /&gt;
CS0:80001D20                 ADD     R0, R0, #2&lt;br /&gt;
CS0:80001D24                 ADD     R12, R12, #2&lt;br /&gt;
CS0:80001D28                 B       loc_80001CAC&lt;br /&gt;
CS0:80001D2C ; ---------------------------------------------------------------------------&lt;br /&gt;
CS0:80001D2C&lt;br /&gt;
CS0:80001D2C loc_80001D2C                            ; CODE XREF: programFlash:loc_80001CAC j&lt;br /&gt;
CS0:80001D2C                 MOV     R0, R5&lt;br /&gt;
CS0:80001D30                 LDMFD   SP!, {R4,R5,PC}&lt;br /&gt;
CS0:80001D30 ; End of function programFlash&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>84.56.189.170</name></author>	</entry>

	</feed>