📄 wrt_arg.c
字号:
/*
wrt_arg.c
Common function for Hal Gunner cmdline routines.
Write a register based on <name>=<value> string.
*/
#include <stdtypes.h>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
/* non-standard includes... */
#include <display.h>
#include <amcclib.h>
void write_arg( char *cmd, UINT32 base, struct PAGE_STRUCT opr_page[], int disp_num_opr )
/*
Entry: cmd - string in format "<name>=<value>"
base - base address of region
opr_page - structure defining register name, offset, size
disp_num_opr - how many entries in the structure
Return: only if understood the command, else print error
and exit(1)
*/
{
int i, index, found = FALSE;
unsigned int amt;
unsigned long lamt;
if ( (index=strcspn(cmd,"=")) > 0 )
{
for(i=0; i<disp_num_opr; i++)
{
// look for matching register by name...
if ( memicmp(cmd, opr_page[i].tag, strlen(opr_page[i].tag)) == 0 )
{
found =- TRUE;
printf("Setting: %s = %s\n", opr_page[i].desc, (cmd+index+1));
switch (opr_page[i].type_byte)
{
case T_BYTE:
sscanf(cmd+index+1, "%x", &amt); /* = atol(cmd+index+1);*/
reg_write8(base, opr_page[i].byte, amt);
break;
case T_WORD:
sscanf(cmd+index+1, "%x", &amt); /* = atol(cmd+index+1);*/
reg_write16(base, opr_page[i].byte, amt);
break;
case T_DWORD:
sscanf(cmd+index+1, "%lx", &lamt); /* = atol(cmd+index+1);*/
reg_write32(base, opr_page[i].byte, lamt);
break;
}
}
} // looking for register name match
}
if ( !found )
{
printf( "Unrecognized register or improperly formatted write option.\n" );
printf( "<register name>=<value>.\n" );
exit(1);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -