Difference between revisions of "Bdisp DDRegisterSelect"

From WikiPrizm
Jump to navigationJump to search
(Created page with "{{syscall | name = Bdisp_DDRegisterSelect | index = 0x01A2 | signature = void Bdisp_DDRegisterSelect(int registerno) | header = fxcg/display.h | synopsis = Probably responsibl...")
 
 
Line 7: Line 7:
 
| comments = This syscall clears bit 4 of 0xA405013C.b, writes P1 (r4) to 0xB4000000 and finally sets bit 4 of 0xA405013C.b again. It looks as if bit 4 controls the LCD-driver's RS-bit; refer to the R61509-manual for more information.
 
| comments = This syscall clears bit 4 of 0xA405013C.b, writes P1 (r4) to 0xB4000000 and finally sets bit 4 of 0xA405013C.b again. It looks as if bit 4 controls the LCD-driver's RS-bit; refer to the R61509-manual for more information.
  
After every write to 0xA405013C or 0xB4000000, the SH-4A processor instruction SYNCO is performed.
+
After every write to 0xA405013C or 0xB4000000, the SH-4A processor instruction SYNCO is performed. You can see this in action by reading the disassembly.
 +
<nowiki>Bdisp_DDRegisterSelect:
 +
 
 +
var_2 = -2
 +
 
 +
add #-4, r15
 +
mov.l #0xA405013C, r3
 +
mov #~16, r5
 +
mov r4, r0
 +
mov.w r0, @(4+var_2,r15)
 +
mov.b @r3, r1 ! Read a byte from the address 0xA405013C and store that byte into R1
 +
and r5, r1 ! Clear bit four of R1
 +
mov.b r1, @r3
 +
synco
 +
mov #0xFFFFFFB4, r6
 +
shll8 r6
 +
shll16 r6 ! R6 = 0xB4000000
 +
mov.w r4, @r6
 +
synco
 +
mov.b @r3, r0
 +
or #16, r0
 +
mov.b r0, @r3
 +
synco
 +
rts
 +
add #4, r15
 +
! End of function Bdisp_DDRegisterSelect
 +
</nowiki>
 
}}
 
}}

Latest revision as of 01:09, 15 February 2015


Synopsis

Header: fxcg/display.h
Syscall index: 0x01A2
Function signature: void Bdisp_DDRegisterSelect(int registerno)

Probably responsible for setting a register on the LCD controller (0xB4000000).

Comments

This syscall clears bit 4 of 0xA405013C.b, writes P1 (r4) to 0xB4000000 and finally sets bit 4 of 0xA405013C.b again. It looks as if bit 4 controls the LCD-driver's RS-bit; refer to the R61509-manual for more information.

After every write to 0xA405013C or 0xB4000000, the SH-4A processor instruction SYNCO is performed. You can see this in action by reading the disassembly.

Bdisp_DDRegisterSelect:

var_2		= -2

		add	#-4, r15
		mov.l	#0xA405013C, r3
		mov	#~16, r5
		mov	r4, r0
		mov.w	r0, @(4+var_2,r15)
		mov.b	@r3, r1		! Read a byte from the address 0xA405013C and store that byte into R1
		and	r5, r1		! Clear	bit four of R1
		mov.b	r1, @r3
		synco
		mov	#0xFFFFFFB4, r6
		shll8	r6
		shll16	r6		! R6 = 0xB4000000
		mov.w	r4, @r6
		synco
		mov.b	@r3, r0
		or	#16, r0
		mov.b	r0, @r3
		synco
		rts
		add	#4, r15
! End of function Bdisp_DDRegisterSelect