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> | ||
}} | }} |
Revision as of 02: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