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

	<entry>
		<id>http://www.bettyhacks.com/wiki/index.php?title=Betty_init</id>
		<title>Betty init</title>
		<link rel="alternate" type="text/html" href="http://www.bettyhacks.com/wiki/index.php?title=Betty_init"/>
				<updated>2007-08-23T11:31:52Z</updated>
		
		<summary type="html">&lt;p&gt;84.56.147.174: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;here is a part of the disassembly of the original firmware.&amp;lt;br&amp;gt;&lt;br /&gt;
it should show you how to init the chip, memory banks, and&amp;lt;br&amp;gt;&lt;br /&gt;
also initializes the lcd display.&amp;lt;br&amp;gt;&lt;br /&gt;
the functions are stripped down, so that only the code needed&amp;lt;br&amp;gt;&lt;br /&gt;
to show the init sequence remains.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
first function is a pause loop, pause time is given in register R0.&amp;lt;br&amp;gt;&lt;br /&gt;
values shown are for R0=64&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
CS0:80000BF4 pause                                   ; CODE XREF: sub_80000C98+40�p&lt;br /&gt;
CS0:80000BF4                                         ; initLCD+24�p ...&lt;br /&gt;
CS0:80000BF4                 LDR     R2, =T0IR&lt;br /&gt;
CS0:80000BF8                 MOV     R3, #0&lt;br /&gt;
CS0:80000BFC                 STR     R3, [R2,#0x10]&lt;br /&gt;
CS0:80000C00                 ADD     R0, R0, R0,LSL#2		-&amp;gt; (64*4)+64 = 320&lt;br /&gt;
CS0:80000C04                 ADD     R3, R3, #2&lt;br /&gt;
CS0:80000C08                 STR     R3, [R2,#4]&lt;br /&gt;
CS0:80000C0C                 ADD     R0, R0, R0,LSL#2		-&amp;gt; (320*4)+320 = 1600&lt;br /&gt;
CS0:80000C10                 SUB     R3, R3, #1&lt;br /&gt;
CS0:80000C14                 RSB     R0, R0, R0,LSL#4		-&amp;gt; (1600*16)-1600 = 24000&lt;br /&gt;
CS0:80000C18                 STR     R3, [R2,#4]&lt;br /&gt;
CS0:80000C1C                 MOV     R0, R0,LSL R3		-&amp;gt; 24000*8 = 192000&lt;br /&gt;
CS0:80000C20&lt;br /&gt;
CS0:80000C20 loc_80000C20                            ; CODE XREF: pause+38�j&lt;br /&gt;
CS0:80000C20                 LDR     R2, =T0IR&lt;br /&gt;
CS0:80000C24                 LDR     R3, [R2,#8]&lt;br /&gt;
CS0:80000C28                 CMP     R3, R0&lt;br /&gt;
CS0:80000C2C                 BCC     loc_80000C20&lt;br /&gt;
CS0:80000C30                 MOV     R3, #2&lt;br /&gt;
CS0:80000C34                 STR     R3, [R2,#4]&lt;br /&gt;
CS0:80000C38 ; End of function pause&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
this is a part of the main startup routine. the pll is set up here,&amp;lt;br&amp;gt;&lt;br /&gt;
and the two flash-memory banks are configured.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
CS0:80000054 STARTUP                                 ; CODE XREF: CS0:RESET_VEC j&lt;br /&gt;
CS0:80000054                                         ; DATA XREF: CS0:off_80000028 o&lt;br /&gt;
CS0:80000054                 LDR     R0, =PLL_CONTROL	 	=0x10000420&lt;br /&gt;
CS0:80000058                 MOV     R1, #0xAA ; '¬'&lt;br /&gt;
CS0:8000005C                 MOV     R2, #0x55 ; 'U'&lt;br /&gt;
CS0:80000060                 LDR     R4, =dword_800029AC	=0x42, =40mhz @ 10mhz input&lt;br /&gt;
CS0:80000064                 LDR     R3, [R4]&lt;br /&gt;
CS0:80000068                 STR     R3, [R0,#4]		PLLCFG = 0100.0010&amp;lt;br&amp;gt;&lt;br /&gt;
CS0:8000006C                 MOV     R3, #1&lt;br /&gt;
CS0:80000070                 STR     R3, [R0]			PLLCON, PLLE=1,PLLC=0&lt;br /&gt;
CS0:80000074                 STR     R1, [R0,#0xC]		PLLFEED&lt;br /&gt;
CS0:80000078                 STR     R2, [R0,#0xC]		PLLFEED&lt;br /&gt;
CS0:8000007C&lt;br /&gt;
CS0:8000007C loc_8000007C                            ; CODE XREF: CS0:80000084 j&lt;br /&gt;
CS0:8000007C                 LDR     R3, [R0,#8]		PLLSTAT&lt;br /&gt;
CS0:80000080                 ANDS    R3, R3, #0x400&lt;br /&gt;
CS0:80000084                 BEQ     loc_8000007C&lt;br /&gt;
CS0:80000088                 MOV     R3, #3&lt;br /&gt;
CS0:8000008C                 STR     R3, [R0]			PLLCON, PLLE=1, PLLC=1&lt;br /&gt;
CS0:80000090                 STR     R1, [R0,#0xC]		PLLFEED&lt;br /&gt;
CS0:80000094                 STR     R2, [R0,#0xC]		PLLFEED&lt;br /&gt;
CS0:80000098                 LDR     R0, =PINSEL2&lt;br /&gt;
CS0:8000009C                 LDR     R1, =dword_800029A4	=0xD6041D4&lt;br /&gt;
CS0:800000A0                 LDR     R2, [R1]&lt;br /&gt;
CS0:800000A4                 STR     R2, [R0]			PINSEL2 = 0xD6041D4&lt;br /&gt;
CS0:800000A8                 LDR     R1, =dword_800029A8	=0x10000420&lt;br /&gt;
CS0:800000AC                 LDR     R2, [R1]&lt;br /&gt;
CS0:800000B0                 LDR     R0, =BCFG0&lt;br /&gt;
CS0:800000B4                 STR     R2, [R0]&lt;br /&gt;
CS0:800000B8                 LDR     R0, =BCFG2			BCFG2=BCF0=0x10000420&lt;br /&gt;
CS0:800000BC                 STR     R2, [R0]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
this snippet initializes bank#1, where the lcd display is connected to.&amp;lt;br&amp;gt;&lt;br /&gt;
0x80000000 is the command interface, 0x80000001 is for data&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
CS0:80000C98 sub_80000C98                            ; CODE XREF: sub_80000294+4C p&amp;lt;br&amp;gt;&lt;br /&gt;
CS0:80000CAC                 LDR     R2, =0xC42&lt;br /&gt;
CS0:80000CB0                 LDR     R3, =BCFG1&lt;br /&gt;
CS0:80000CB4                 STR     R2, [R3]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
here the lc-display gets initialized and cleared.&amp;lt;br&amp;gt;&lt;br /&gt;
values shown with -&amp;gt; are what is written to the command interface of the lcd.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
CS0:80000F84 initLCD                                 ; DATA XREF: CS0:80002A08?o&lt;br /&gt;
CS0:80000F8C                 MOVL    R3, 0xFFFFFFE1&lt;br /&gt;
CS0:80000F90                 MOV     R4, #0x81000000&lt;br /&gt;
CS0:80000F94                 STRB    R3, [R4]			-&amp;gt;	E1&lt;br /&gt;
CS0:80000F98                 ADD     R3, R3, #1			&lt;br /&gt;
CS0:80000FA0                 MOV     R0, #0x64 ; 'd'&lt;br /&gt;
CS0:80000FA4                 STRB    R3, [R4]			-&amp;gt;	E2&lt;br /&gt;
CS0:80000FA8                 BL      pause&lt;br /&gt;
CS0:80000FAC                 MOVL    R3, 0xFFFFFFAB&lt;br /&gt;
CS0:80000FB0                 STRB    R3, [R4]			-&amp;gt;	AB&lt;br /&gt;
CS0:80000FB4                 ADD     R3, R3, #0x7C&lt;br /&gt;
CS0:80000FB8                 STRB    R3, [R4]			-&amp;gt;	27&lt;br /&gt;
CS0:80000FBC                 MOVL    R2, 0xFFFFFF81&lt;br /&gt;
CS0:80000FC0                 ADD     R3, R3, #0x18&lt;br /&gt;
CS0:80000FC4                 STRB    R2, [R4]			-&amp;gt;	81&lt;br /&gt;
CS0:80000FC8                 STRB    R3, [R4]			-&amp;gt;	3F&lt;br /&gt;
CS0:80000FCC                 ADD     R3, R3, #0x26&lt;br /&gt;
CS0:80000FD0                 STRB    R3, [R4]			-&amp;gt;	65&lt;br /&gt;
CS0:80000FD4                 SUB     R3, R3, #5&lt;br /&gt;
CS0:80000FD8                 STRB    R3, [R4]			-&amp;gt;	60&lt;br /&gt;
CS0:80000FDC                 SUB     R3, R3, #0x44&lt;br /&gt;
CS0:80000FE0                 STRB    R3, [R4]			-&amp;gt;	1C&lt;br /&gt;
CS0:80000FE4                 ADD     R3, R3, #0x45&lt;br /&gt;
CS0:80000FE8                 STRB    R3, [R4]			-&amp;gt;	61&lt;br /&gt;
CS0:80000FEC                 SUB     R3, R3, #0x57&lt;br /&gt;
CS0:80000FF0                 STRB    R3, [R4]			-&amp;gt;	0A&lt;br /&gt;
CS0:80000FF4                 ADD     R3, R3, #0x58&lt;br /&gt;
CS0:80000FF8                 STRB    R3, [R4]			-&amp;gt;	62&lt;br /&gt;
CS0:80000FFC                 ADD     R3, R3, #0x13&lt;br /&gt;
CS0:80001000                 STRB    R3, [R4]			-&amp;gt;	75&lt;br /&gt;
CS0:80001004                 SUB     R3, R3, #0x12&lt;br /&gt;
CS0:80001008                 STRB    R3, [R4]			-&amp;gt;	63&lt;br /&gt;
CS0:8000100C                 SUB     R3, R3, #0xD3&lt;br /&gt;
CS0:80001010                 STRB    R2, [R4]			-&amp;gt;	81&lt;br /&gt;
CS0:80001014                 STRB    R3, [R4]			-&amp;gt;	90&lt;br /&gt;
CS0:80001018                 SUB     R3, R3, #8&lt;br /&gt;
CS0:8000101C                 STRB    R3, [R4]			-&amp;gt;	88&lt;br /&gt;
CS0:80001020                 MOV     R5, #0&lt;br /&gt;
CS0:80001024                 ADD     R3, R3, #1&lt;br /&gt;
CS0:80001028                 STRB    R5, [R4]			-&amp;gt;	00&lt;br /&gt;
CS0:8000102C                 STRB    R3, [R4]			-&amp;gt;	89&lt;br /&gt;
CS0:80001030                 ADD     R3, R3, #1&lt;br /&gt;
CS0:80001034                 STRB    R5, [R4]			-&amp;gt;	00&lt;br /&gt;
CS0:80001038                 MOV     R1, #0x33 ; '3'&lt;br /&gt;
CS0:8000103C                 STRB    R3, [R4]			-&amp;gt;	8A&lt;br /&gt;
CS0:80001040                 ADD     R3, R3, #1&lt;br /&gt;
CS0:80001044                 STRB    R1, [R4]			-&amp;gt;	33&lt;br /&gt;
CS0:80001048                 STRB    R3, [R4]			-&amp;gt;	8B&lt;br /&gt;
CS0:8000104C                 ADD     R3, R3, #1&lt;br /&gt;
CS0:80001050                 STRB    R1, [R4]			-&amp;gt;	33&lt;br /&gt;
CS0:80001054                 MOV     R12, #0x66 ; 'f'&lt;br /&gt;
CS0:80001058                 STRB    R3, [R4]			-&amp;gt;	8C&lt;br /&gt;
CS0:8000105C                 ADD     R3, R3, #1&lt;br /&gt;
CS0:80001060                 STRB    R12, [R4]			-&amp;gt;	66&lt;br /&gt;
CS0:80001064                 STRB    R3, [R4]			-&amp;gt;	8D&lt;br /&gt;
CS0:80001068                 ADD     R3, R3, #1&lt;br /&gt;
CS0:8000106C                 STRB    R12, [R4]			-&amp;gt;	66&lt;br /&gt;
CS0:80001070                 MOVL    LR, 0xFFFFFF99&lt;br /&gt;
CS0:80001074                 STRB    R3, [R4]			-&amp;gt;	8E&lt;br /&gt;
CS0:80001078                 ADD     R3, R3, #1&lt;br /&gt;
CS0:8000107C                 STRB    LR, [R4]			-&amp;gt;	99&lt;br /&gt;
CS0:80001080                 MOV     R0, R5&lt;br /&gt;
CS0:80001084                 STRB    R3, [R4]			-&amp;gt;	8F&lt;br /&gt;
CS0:80001088                 STRB    LR, [R4]			-&amp;gt;	99&lt;br /&gt;
&lt;br /&gt;
CS0:80000F58                 CMP     R0, #0&lt;br /&gt;
CS0:80000F5C                 MOV     R1, #0x81000000&lt;br /&gt;
CS0:80000F60                 MOVLNE  R3, 0xFFFFFFA1&lt;br /&gt;
CS0:80000F64                 MOVLEQ  R3, 0xFFFFFFA0&lt;br /&gt;
CS0:80000F68                 STRNEB  R3, [R1]	-&amp;gt;	0FFFFFFA1&lt;br /&gt;
CS0:80000F6C                 STREQB  R3, [R1]			-&amp;gt;	A0&lt;br /&gt;
CS0:80000F70                 ADDNE   R3, R3, #0x1F&lt;br /&gt;
CS0:80000F74                 ADDEQ   R3, R3, #0x28&lt;br /&gt;
CS0:80000F78                 STRNEB  R3, [R1]	-&amp;gt;	0FFFFFFC0&lt;br /&gt;
CS0:80000F7C                 STREQB  R3, [R1]			-&amp;gt;	C8&lt;br /&gt;
&lt;br /&gt;
CS0:80001090                 MOV     R3, #0x2E ; '.'&lt;br /&gt;
CS0:80001094                 STRB    R3, [R4]			-&amp;gt;	2E&lt;br /&gt;
CS0:80001098                 MOV     R0, #0x7D0&lt;br /&gt;
CS0:8000109C                 BL      pause&lt;br /&gt;
CS0:800010A0                 MOV     R3, #0x2F ; '/'&lt;br /&gt;
CS0:800010A4                 STRB    R3, [R4]			-&amp;gt;	2F&lt;br /&gt;
CS0:800010A8                 SUB     R3, R3, #0x8B&lt;br /&gt;
CS0:800010AC                 STRB    R3, [R4]			-&amp;gt;	A4&lt;br /&gt;
CS0:800010B0                 ADD     R3, R3, #2&lt;br /&gt;
CS0:800010B4                 STRB    R3, [R4]			-&amp;gt;	A6&lt;br /&gt;
CS0:800010B8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
this loop clears the lcd screen. it has 128x160 pixels, adressed byte-wise &amp;lt;br&amp;gt;&lt;br /&gt;
(one byte = 8 pixels).&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
CS0:800010B8 initLCD_loop1                           ; CODE XREF: initLCD+180?j&lt;br /&gt;
CS0:800010B8                 MOV     R1, #0x81000000 ; clear screen&lt;br /&gt;
CS0:800010BC                 MOVL    R3, 0xFFFFFFB0&lt;br /&gt;
CS0:800010C0                 MOV     R2, R5,LSR#3&lt;br /&gt;
CS0:800010C4                 STRB    R3, [R1]			-&amp;gt;	B0&lt;br /&gt;
CS0:800010C8                 AND     R2, R2, #0x1F&lt;br /&gt;
CS0:800010CC                 ADD     R3, R3, #0x60&lt;br /&gt;
CS0:800010D0                 STRB    R2, [R1]			-&amp;gt;	y-coord?&lt;br /&gt;
CS0:800010D4                 STRB    R3, [R1]			-&amp;gt;	10&lt;br /&gt;
CS0:800010D8                 SUB     R3, R3, #0x10&lt;br /&gt;
CS0:800010DC                 STRB    R3, [R1]			-&amp;gt;	x-coord?&lt;br /&gt;
CS0:800010E0                 MOV     R2, #0x7F ; ''&lt;br /&gt;
CS0:800010E4&lt;br /&gt;
CS0:800010E4 lcdINIT_loop2                           ; CODE XREF: initLCD+174?j&lt;br /&gt;
CS0:800010E4                 LDR     R3, =byte_81000001&lt;br /&gt;
CS0:800010E8                 MOV     R0, #0&lt;br /&gt;
CS0:800010EC                 SUBS    R2, R2, #1&lt;br /&gt;
CS0:800010F0                 STRB    R0, [R3]			-&amp;gt;	data 00&lt;br /&gt;
CS0:800010F4                 STRB    R0, [R3]			-&amp;gt;	data 00&lt;br /&gt;
CS0:800010F8                 BPL     lcdINIT_loop2&lt;br /&gt;
CS0:800010FC                 ADD     R5, R5, #8&lt;br /&gt;
CS0:80001100                 CMP     R5, #0x9F ; 'ƒ'&lt;br /&gt;
CS0:80001104                 BLE     initLCD_loop1&lt;br /&gt;
CS0:80001108                 MOVL    R2, 0xFFFFFFAF&lt;br /&gt;
CS0:8000110C                 SUB     R3, R3, #1&lt;br /&gt;
CS0:80001110                 STRB    R2, [R3]			-&amp;gt;	AF&lt;br /&gt;
CS0:80001114 ; End of function initLCD&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>84.56.147.174</name></author>	</entry>

	<entry>
		<id>http://www.bettyhacks.com/wiki/index.php?title=Betty_init</id>
		<title>Betty init</title>
		<link rel="alternate" type="text/html" href="http://www.bettyhacks.com/wiki/index.php?title=Betty_init"/>
				<updated>2007-08-23T11:27:34Z</updated>
		
		<summary type="html">&lt;p&gt;84.56.147.174: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;here is a part of the disassembly of the original firmware.&amp;lt;br&amp;gt;&lt;br /&gt;
it should show you how to init the chip, memory banks, and&amp;lt;br&amp;gt;&lt;br /&gt;
also initializes the lcd display.&amp;lt;br&amp;gt;&lt;br /&gt;
the functions are stripped down, so that only the code needed&amp;lt;br&amp;gt;&lt;br /&gt;
to show the init sequence remains.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
first function is a pause loop, pause time is given in register R0.&amp;lt;br&amp;gt;&lt;br /&gt;
values shown are for R0=64&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
CS0:80000BF4 pause                                   ; CODE XREF: sub_80000C98+40�p&lt;br /&gt;
CS0:80000BF4                                         ; initLCD+24�p ...&lt;br /&gt;
CS0:80000BF4                 LDR     R2, =T0IR&amp;lt;br&amp;gt;&lt;br /&gt;
CS0:80000BF8                 MOV     R3, #0&amp;lt;br&amp;gt;&lt;br /&gt;
CS0:80000BFC                 STR     R3, [R2,#0x10]&amp;lt;br&amp;gt;&lt;br /&gt;
CS0:80000C00                 ADD     R0, R0, R0,LSL#2		-&amp;gt; (64*4)+64 = 320&lt;br /&gt;
CS0:80000C04                 ADD     R3, R3, #2&amp;lt;br&amp;gt;&lt;br /&gt;
CS0:80000C08                 STR     R3, [R2,#4]&amp;lt;br&amp;gt;&lt;br /&gt;
CS0:80000C0C                 ADD     R0, R0, R0,LSL#2		-&amp;gt; (320*4)+320 = 1600&lt;br /&gt;
CS0:80000C10                 SUB     R3, R3, #1&amp;lt;br&amp;gt;&lt;br /&gt;
CS0:80000C14                 RSB     R0, R0, R0,LSL#4		-&amp;gt; (1600*16)-1600 = 24000&lt;br /&gt;
CS0:80000C18                 STR     R3, [R2,#4]&amp;lt;br&amp;gt;&lt;br /&gt;
CS0:80000C1C                 MOV     R0, R0,LSL R3		-&amp;gt; 24000*8 = 192000&amp;lt;br&amp;gt;&lt;br /&gt;
CS0:80000C20&amp;lt;br&amp;gt;&lt;br /&gt;
CS0:80000C20 loc_80000C20                            ; CODE XREF: pause+38�j&amp;lt;br&amp;gt;&lt;br /&gt;
CS0:80000C20                 LDR     R2, =T0IR&amp;lt;br&amp;gt;&lt;br /&gt;
CS0:80000C24                 LDR     R3, [R2,#8]&amp;lt;br&amp;gt;&lt;br /&gt;
CS0:80000C28                 CMP     R3, R0&amp;lt;br&amp;gt;&lt;br /&gt;
CS0:80000C2C                 BCC     loc_80000C20&amp;lt;br&amp;gt;&lt;br /&gt;
CS0:80000C30                 MOV     R3, #2&amp;lt;br&amp;gt;&lt;br /&gt;
CS0:80000C34                 STR     R3, [R2,#4]&amp;lt;br&amp;gt;&lt;br /&gt;
CS0:80000C38 ; End of function pause&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
this is a part of the main startup routine. the pll is set up here,&amp;lt;br&amp;gt;&lt;br /&gt;
and the two flash-memory banks are configured.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
CS0:80000054 STARTUP                                 ; CODE XREF: CS0:RESET_VEC j&amp;lt;br&amp;gt;&lt;br /&gt;
CS0:80000054                                         ; DATA XREF: CS0:off_80000028 o&amp;lt;br&amp;gt;&lt;br /&gt;
CS0:80000054                 LDR     R0, =PLL_CONTROL	 	=0x10000420&amp;lt;br&amp;gt;&lt;br /&gt;
CS0:80000058                 MOV     R1, #0xAA ; '¬'&amp;lt;br&amp;gt;&lt;br /&gt;
CS0:8000005C                 MOV     R2, #0x55 ; 'U'&amp;lt;br&amp;gt;&lt;br /&gt;
CS0:80000060                 LDR     R4, =dword_800029AC	=0x42, =40mhz @ 10mhz input&amp;lt;br&amp;gt;&lt;br /&gt;
CS0:80000064                 LDR     R3, [R4]&amp;lt;br&amp;gt;&lt;br /&gt;
CS0:80000068                 STR     R3, [R0,#4]		PLLCFG = 0100.0010&amp;lt;br&amp;gt;&lt;br /&gt;
CS0:8000006C                 MOV     R3, #1&amp;lt;br&amp;gt;&lt;br /&gt;
CS0:80000070                 STR     R3, [R0]			PLLCON, PLLE=1,PLLC=0&amp;lt;br&amp;gt;&lt;br /&gt;
CS0:80000074                 STR     R1, [R0,#0xC]		PLLFEED&amp;lt;br&amp;gt;&lt;br /&gt;
CS0:80000078                 STR     R2, [R0,#0xC]		PLLFEED&amp;lt;br&amp;gt;&lt;br /&gt;
CS0:8000007C&amp;lt;br&amp;gt;&lt;br /&gt;
CS0:8000007C loc_8000007C                            ; CODE XREF: CS0:80000084 j&amp;lt;br&amp;gt;&lt;br /&gt;
CS0:8000007C                 LDR     R3, [R0,#8]		PLLSTAT&amp;lt;br&amp;gt;&lt;br /&gt;
CS0:80000080                 ANDS    R3, R3, #0x400&amp;lt;br&amp;gt;&lt;br /&gt;
CS0:80000084                 BEQ     loc_8000007C&amp;lt;br&amp;gt;&lt;br /&gt;
CS0:80000088                 MOV     R3, #3&amp;lt;br&amp;gt;&lt;br /&gt;
CS0:8000008C                 STR     R3, [R0]			PLLCON, PLLE=1, PLLC=1&amp;lt;br&amp;gt;&lt;br /&gt;
CS0:80000090                 STR     R1, [R0,#0xC]		PLLFEED&amp;lt;br&amp;gt;&lt;br /&gt;
CS0:80000094                 STR     R2, [R0,#0xC]		PLLFEED&amp;lt;br&amp;gt;&lt;br /&gt;
CS0:80000098                 LDR     R0, =PINSEL2&amp;lt;br&amp;gt;&lt;br /&gt;
CS0:8000009C                 LDR     R1, =dword_800029A4	=0xD6041D4&amp;lt;br&amp;gt;&lt;br /&gt;
CS0:800000A0                 LDR     R2, [R1]&amp;lt;br&amp;gt;&lt;br /&gt;
CS0:800000A4                 STR     R2, [R0]			PINSEL2 = 0xD6041D4&amp;lt;br&amp;gt;&lt;br /&gt;
CS0:800000A8                 LDR     R1, =dword_800029A8	=0x10000420&amp;lt;br&amp;gt;&lt;br /&gt;
CS0:800000AC                 LDR     R2, [R1]&amp;lt;br&amp;gt;&lt;br /&gt;
CS0:800000B0                 LDR     R0, =BCFG0&amp;lt;br&amp;gt;&lt;br /&gt;
CS0:800000B4                 STR     R2, [R0]&amp;lt;br&amp;gt;&lt;br /&gt;
CS0:800000B8                 LDR     R0, =BCFG2			BCFG2=BCF0=0x10000420&amp;lt;br&amp;gt;&lt;br /&gt;
CS0:800000BC                 STR     R2, [R0]&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
this snippet initializes bank#1, where the lcd display is connected to.&amp;lt;br&amp;gt;&lt;br /&gt;
0x80000000 is the command interface, 0x80000001 is for data&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
CS0:80000C98 sub_80000C98                            ; CODE XREF: sub_80000294+4C p&amp;lt;br&amp;gt;&lt;br /&gt;
CS0:80000CAC                 LDR     R2, =0xC42&amp;lt;br&amp;gt;&lt;br /&gt;
CS0:80000CB0                 LDR     R3, =BCFG1&amp;lt;br&amp;gt;&lt;br /&gt;
CS0:80000CB4                 STR     R2, [R3]&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
here the lc-display gets initialized and cleared.&amp;lt;br&amp;gt;&lt;br /&gt;
values shown with -&amp;gt; are what is written to the command interface of the lcd.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
CS0:80000F84 initLCD                                 ; DATA XREF: CS0:80002A08�o&amp;lt;br&amp;gt;&lt;br /&gt;
CS0:80000F8C                 MOVL    R3, 0xFFFFFFE1&amp;lt;br&amp;gt;&lt;br /&gt;
CS0:80000F90                 MOV     R4, #0x81000000&amp;lt;br&amp;gt;&lt;br /&gt;
CS0:80000F94                 STRB    R3, [R4]			-&amp;gt;	E1&amp;lt;br&amp;gt;&lt;br /&gt;
CS0:80000F98                 ADD     R3, R3, #1			&amp;lt;br&amp;gt;&lt;br /&gt;
CS0:80000FA0                 MOV     R0, #0x64 ; 'd'&amp;lt;br&amp;gt;&lt;br /&gt;
CS0:80000FA4                 STRB    R3, [R4]			-&amp;gt;	E2&amp;lt;br&amp;gt;&lt;br /&gt;
CS0:80000FA8                 BL      pause&amp;lt;br&amp;gt;&lt;br /&gt;
CS0:80000FAC                 MOVL    R3, 0xFFFFFFAB&amp;lt;br&amp;gt;&lt;br /&gt;
CS0:80000FB0                 STRB    R3, [R4]			-&amp;gt;	AB&amp;lt;br&amp;gt;&lt;br /&gt;
CS0:80000FB4                 ADD     R3, R3, #0x7C&amp;lt;br&amp;gt;&lt;br /&gt;
CS0:80000FB8                 STRB    R3, [R4]			-&amp;gt;	27&amp;lt;br&amp;gt;&lt;br /&gt;
CS0:80000FBC                 MOVL    R2, 0xFFFFFF81&amp;lt;br&amp;gt;&lt;br /&gt;
CS0:80000FC0                 ADD     R3, R3, #0x18&amp;lt;br&amp;gt;&lt;br /&gt;
CS0:80000FC4                 STRB    R2, [R4]			-&amp;gt;	81&amp;lt;br&amp;gt;&lt;br /&gt;
CS0:80000FC8                 STRB    R3, [R4]			-&amp;gt;	3F&amp;lt;br&amp;gt;&lt;br /&gt;
CS0:80000FCC                 ADD     R3, R3, #0x26&amp;lt;br&amp;gt;&lt;br /&gt;
CS0:80000FD0                 STRB    R3, [R4]			-&amp;gt;	65&amp;lt;br&amp;gt;&lt;br /&gt;
CS0:80000FD4                 SUB     R3, R3, #5&amp;lt;br&amp;gt;&lt;br /&gt;
CS0:80000FD8                 STRB    R3, [R4]			-&amp;gt;	60&amp;lt;br&amp;gt;&lt;br /&gt;
CS0:80000FDC                 SUB     R3, R3, #0x44&amp;lt;br&amp;gt;&lt;br /&gt;
CS0:80000FE0                 STRB    R3, [R4]			-&amp;gt;	1C&amp;lt;br&amp;gt;&lt;br /&gt;
CS0:80000FE4                 ADD     R3, R3, #0x45&amp;lt;br&amp;gt;&lt;br /&gt;
CS0:80000FE8                 STRB    R3, [R4]			-&amp;gt;	61&amp;lt;br&amp;gt;&lt;br /&gt;
CS0:80000FEC                 SUB     R3, R3, #0x57&amp;lt;br&amp;gt;&lt;br /&gt;
CS0:80000FF0                 STRB    R3, [R4]			-&amp;gt;	0A&amp;lt;br&amp;gt;&lt;br /&gt;
CS0:80000FF4                 ADD     R3, R3, #0x58&amp;lt;br&amp;gt;&lt;br /&gt;
CS0:80000FF8                 STRB    R3, [R4]			-&amp;gt;	62&amp;lt;br&amp;gt;&lt;br /&gt;
CS0:80000FFC                 ADD     R3, R3, #0x13&amp;lt;br&amp;gt;&lt;br /&gt;
CS0:80001000                 STRB    R3, [R4]			-&amp;gt;	75&amp;lt;br&amp;gt;&lt;br /&gt;
CS0:80001004                 SUB     R3, R3, #0x12&amp;lt;br&amp;gt;&lt;br /&gt;
CS0:80001008                 STRB    R3, [R4]			-&amp;gt;	63&amp;lt;br&amp;gt;&lt;br /&gt;
CS0:8000100C                 SUB     R3, R3, #0xD3&amp;lt;br&amp;gt;&lt;br /&gt;
CS0:80001010                 STRB    R2, [R4]			-&amp;gt;	81&amp;lt;br&amp;gt;&lt;br /&gt;
CS0:80001014                 STRB    R3, [R4]			-&amp;gt;	90&amp;lt;br&amp;gt;&lt;br /&gt;
CS0:80001018                 SUB     R3, R3, #8&amp;lt;br&amp;gt;&lt;br /&gt;
CS0:8000101C                 STRB    R3, [R4]			-&amp;gt;	88&amp;lt;br&amp;gt;&lt;br /&gt;
CS0:80001020                 MOV     R5, #0&amp;lt;br&amp;gt;&lt;br /&gt;
CS0:80001024                 ADD     R3, R3, #1&amp;lt;br&amp;gt;&lt;br /&gt;
CS0:80001028                 STRB    R5, [R4]			-&amp;gt;	00&amp;lt;br&amp;gt;&lt;br /&gt;
CS0:8000102C                 STRB    R3, [R4]			-&amp;gt;	89&amp;lt;br&amp;gt;&lt;br /&gt;
CS0:80001030                 ADD     R3, R3, #1&amp;lt;br&amp;gt;&lt;br /&gt;
CS0:80001034                 STRB    R5, [R4]			-&amp;gt;	00&amp;lt;br&amp;gt;&lt;br /&gt;
CS0:80001038                 MOV     R1, #0x33 ; '3'&amp;lt;br&amp;gt;&lt;br /&gt;
CS0:8000103C                 STRB    R3, [R4]			-&amp;gt;	8A&amp;lt;br&amp;gt;&lt;br /&gt;
CS0:80001040                 ADD     R3, R3, #1&amp;lt;br&amp;gt;&lt;br /&gt;
CS0:80001044                 STRB    R1, [R4]			-&amp;gt;	33&amp;lt;br&amp;gt;&lt;br /&gt;
CS0:80001048                 STRB    R3, [R4]			-&amp;gt;	8B&amp;lt;br&amp;gt;&lt;br /&gt;
CS0:8000104C                 ADD     R3, R3, #1&amp;lt;br&amp;gt;&lt;br /&gt;
CS0:80001050                 STRB    R1, [R4]			-&amp;gt;	33&amp;lt;br&amp;gt;&lt;br /&gt;
CS0:80001054                 MOV     R12, #0x66 ; 'f'&amp;lt;br&amp;gt;&lt;br /&gt;
CS0:80001058                 STRB    R3, [R4]			-&amp;gt;	8C&amp;lt;br&amp;gt;&lt;br /&gt;
CS0:8000105C                 ADD     R3, R3, #1&amp;lt;br&amp;gt;&lt;br /&gt;
CS0:80001060                 STRB    R12, [R4]			-&amp;gt;	66&amp;lt;br&amp;gt;&lt;br /&gt;
CS0:80001064                 STRB    R3, [R4]			-&amp;gt;	8D&amp;lt;br&amp;gt;&lt;br /&gt;
CS0:80001068                 ADD     R3, R3, #1&amp;lt;br&amp;gt;&lt;br /&gt;
CS0:8000106C                 STRB    R12, [R4]			-&amp;gt;	66&amp;lt;br&amp;gt;&lt;br /&gt;
CS0:80001070                 MOVL    LR, 0xFFFFFF99&amp;lt;br&amp;gt;&lt;br /&gt;
CS0:80001074                 STRB    R3, [R4]			-&amp;gt;	8E&amp;lt;br&amp;gt;&lt;br /&gt;
CS0:80001078                 ADD     R3, R3, #1&amp;lt;br&amp;gt;&lt;br /&gt;
CS0:8000107C                 STRB    LR, [R4]			-&amp;gt;	99&amp;lt;br&amp;gt;&lt;br /&gt;
CS0:80001080                 MOV     R0, R5&amp;lt;br&amp;gt;&lt;br /&gt;
CS0:80001084                 STRB    R3, [R4]			-&amp;gt;	8F&amp;lt;br&amp;gt;&lt;br /&gt;
CS0:80001088                 STRB    LR, [R4]			-&amp;gt;	99&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
CS0:80000F58                 CMP     R0, #0&amp;lt;br&amp;gt;&lt;br /&gt;
CS0:80000F5C                 MOV     R1, #0x81000000&amp;lt;br&amp;gt;&lt;br /&gt;
CS0:80000F60                 MOVLNE  R3, 0xFFFFFFA1&amp;lt;br&amp;gt;&lt;br /&gt;
CS0:80000F64                 MOVLEQ  R3, 0xFFFFFFA0&amp;lt;br&amp;gt;&lt;br /&gt;
CS0:80000F68                 STRNEB  R3, [R1]	-&amp;gt;	0FFFFFFA1&amp;lt;br&amp;gt;&lt;br /&gt;
CS0:80000F6C                 STREQB  R3, [R1]			-&amp;gt;	A0&amp;lt;br&amp;gt;&lt;br /&gt;
CS0:80000F70                 ADDNE   R3, R3, #0x1F&amp;lt;br&amp;gt;&lt;br /&gt;
CS0:80000F74                 ADDEQ   R3, R3, #0x28&amp;lt;br&amp;gt;&lt;br /&gt;
CS0:80000F78                 STRNEB  R3, [R1]	-&amp;gt;	0FFFFFFC0&amp;lt;br&amp;gt;&lt;br /&gt;
CS0:80000F7C                 STREQB  R3, [R1]			-&amp;gt;	C8&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
CS0:80001090                 MOV     R3, #0x2E ; '.'&amp;lt;br&amp;gt;&lt;br /&gt;
CS0:80001094                 STRB    R3, [R4]			-&amp;gt;	2E&amp;lt;br&amp;gt;&lt;br /&gt;
CS0:80001098                 MOV     R0, #0x7D0&amp;lt;br&amp;gt;&lt;br /&gt;
CS0:8000109C                 BL      pause&amp;lt;br&amp;gt;&lt;br /&gt;
CS0:800010A0                 MOV     R3, #0x2F ; '/'&amp;lt;br&amp;gt;&lt;br /&gt;
CS0:800010A4                 STRB    R3, [R4]			-&amp;gt;	2F&amp;lt;br&amp;gt;&lt;br /&gt;
CS0:800010A8                 SUB     R3, R3, #0x8B&amp;lt;br&amp;gt;&lt;br /&gt;
CS0:800010AC                 STRB    R3, [R4]			-&amp;gt;	A4&amp;lt;br&amp;gt;&lt;br /&gt;
CS0:800010B0                 ADD     R3, R3, #2&amp;lt;br&amp;gt;&lt;br /&gt;
CS0:800010B4                 STRB    R3, [R4]			-&amp;gt;	A6&amp;lt;br&amp;gt;&lt;br /&gt;
CS0:800010B8&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
this loop clears the lcd screen. it has 128x160 pixels, adressed byte-wise &amp;lt;br&amp;gt;&lt;br /&gt;
(one byte = 8 pixels).&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
CS0:800010B8 initLCD_loop1                           ; CODE XREF: initLCD+180�j&amp;lt;br&amp;gt;&lt;br /&gt;
CS0:800010B8                 MOV     R1, #0x81000000 ; clear screen&amp;lt;br&amp;gt;&lt;br /&gt;
CS0:800010BC                 MOVL    R3, 0xFFFFFFB0&amp;lt;br&amp;gt;&lt;br /&gt;
CS0:800010C0                 MOV     R2, R5,LSR#3&amp;lt;br&amp;gt;&lt;br /&gt;
CS0:800010C4                 STRB    R3, [R1]			-&amp;gt;	B0&amp;lt;br&amp;gt;&lt;br /&gt;
CS0:800010C8                 AND     R2, R2, #0x1F&amp;lt;br&amp;gt;&lt;br /&gt;
CS0:800010CC                 ADD     R3, R3, #0x60&amp;lt;br&amp;gt;&lt;br /&gt;
CS0:800010D0                 STRB    R2, [R1]			-&amp;gt;	y-coord?&amp;lt;br&amp;gt;&lt;br /&gt;
CS0:800010D4                 STRB    R3, [R1]			-&amp;gt;	10&amp;lt;br&amp;gt;&lt;br /&gt;
CS0:800010D8                 SUB     R3, R3, #0x10&amp;lt;br&amp;gt;&lt;br /&gt;
CS0:800010DC                 STRB    R3, [R1]			-&amp;gt;	x-coord?&amp;lt;br&amp;gt;&lt;br /&gt;
CS0:800010E0                 MOV     R2, #0x7F ; ''&amp;lt;br&amp;gt;&lt;br /&gt;
CS0:800010E4&amp;lt;br&amp;gt;&lt;br /&gt;
CS0:800010E4 lcdINIT_loop2                           ; CODE XREF: initLCD+174�j&amp;lt;br&amp;gt;&lt;br /&gt;
CS0:800010E4                 LDR     R3, =byte_81000001&amp;lt;br&amp;gt;&lt;br /&gt;
CS0:800010E8                 MOV     R0, #0&amp;lt;br&amp;gt;&lt;br /&gt;
CS0:800010EC                 SUBS    R2, R2, #1&amp;lt;br&amp;gt;&lt;br /&gt;
CS0:800010F0                 STRB    R0, [R3]			-&amp;gt;	data 00&amp;lt;br&amp;gt;&lt;br /&gt;
CS0:800010F4                 STRB    R0, [R3]			-&amp;gt;	data 00&amp;lt;br&amp;gt;&lt;br /&gt;
CS0:800010F8                 BPL     lcdINIT_loop2&amp;lt;br&amp;gt;&lt;br /&gt;
CS0:800010FC                 ADD     R5, R5, #8&amp;lt;br&amp;gt;&lt;br /&gt;
CS0:80001100                 CMP     R5, #0x9F ; 'ƒ'&amp;lt;br&amp;gt;&lt;br /&gt;
CS0:80001104                 BLE     initLCD_loop1&amp;lt;br&amp;gt;&lt;br /&gt;
CS0:80001108                 MOVL    R2, 0xFFFFFFAF&amp;lt;br&amp;gt;&lt;br /&gt;
CS0:8000110C                 SUB     R3, R3, #1&amp;lt;br&amp;gt;&lt;br /&gt;
CS0:80001110                 STRB    R2, [R3]			-&amp;gt;	AF&amp;lt;br&amp;gt;&lt;br /&gt;
CS0:80001114 ; End of function initLCD&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>84.56.147.174</name></author>	</entry>

	</feed>