LIB: pm_cstd

CStyle Lib: Standard functions

pmrom_cstd.s

Type: Source File

Dependency: pm_init.s and pm_cstyle.s

Including Rules: Must be after ROM (PM_HEADER) declaration

Functions

Get keypad

c_keypad

Returns: keys down, zero if none pressed

This function provides debouncing and weak checking.

Keys are returned active high (0 = Released, 1 = Pressed) unlike KEY_PAD hardware register.

To filter the wanted key, use AND logic with one of the following defines:

Keypad Input      
KEY_A $01 tst a, KEY_A A Key
KEY_B $02 tst a, KEY_B B Key
KEY_C $04 tst a, KEY_C C Key
KEY_UP $08 tst a, KEY_UP Up Key
KEY_DOWN $10 tst a, KEY_DOWN Down Key
KEY_LEFT $20 tst a, KEY_LEFT Left Key
KEY_RIGHT $40 tst a, KEY_RIGHT Right Key
KEY_POWER $80 tst a, KEY_POWER Power Key

Get string length

c_strlen string_addr

[CPtr] string_addr: string address

Returns: number of characters not including the null-termination

Copy string to RAM

c_strcpy dest_ram, string_addr

[CVar] dest_ram: destination ram address

[CPtr] string_addr: string address

No return

Copy block of memory to RAM

c_memcpy dest_ram, block_addr, sizen

[CVar] dest_ram: destination ram address

[CPtr] block_addr: block address

[CVar] sizen: number of bytes

No return

Fill block of memory in RAM

c_memset dest_ram, value, sizen

[CVar] dest_ram: destination ram address

[CVar] value: 8-bits value

[CVar] sizen: number of bytes

No return

Compare two strings

c_strcmp string1_addr, string2_addr

[CPtr] string1_addr: 1st string address

[CPtr] string2_addr: 2nd string address

Returns: Zero if equal, non-zero is not
Positive if string1 > string2 or negative if string1 < string2

Compare two blocks of memory

c_memcmp block1_addr, block2_addr, sizen

[CPtr] block1_addr: 1st block address

[CPtr] block2_addr: 2nd block address

[CVar] sizen: number of bytes

Returns: Zero if equal, non-zero is not
Positive if block1 > block2 or negative if block1 < block2