📄 phex.c
字号:
#include <stdlib.h>
#include <stdio.h>
#include <sysLib.h>
#define EXC_REGISTER_SETBANK 0x02
int phex(void)
{
int device_num, module, IOport;
int i, ilong, zerocnt, ind, bank;
unsigned short int *valptr, value;
char buf[8], buf1[80]={0};
printf ("EXCALIBUR Phex - Print Hex Values Utility\n");
printf("Device number (in hex, e.g. d8): ");
scanf("%x",&device_num);
printf("IOport value (in hex, e.g. 280): ");
scanf("%x", &IOport);
printf("Channel number: \n");
scanf("%d",&module);
printf("Channel %d\n", module);
bank = module * 2;
sysOutByte(IOport + EXC_REGISTER_SETBANK, bank++);
valptr = (unsigned short int *)(device_num << 12);
ind = buf[7] = zerocnt = 0;
for (ilong=0; ilong < 0x10000; ilong+=2)
{
if (ilong == 0x8000) /* end of first bank */
{
sysOutByte(IOport + EXC_REGISTER_SETBANK, bank);
valptr = (unsigned short int *)(device_num << 12);
}
value = *valptr++;
if (value == 0)
zerocnt++;
sprintf(buf, "%04x ", value);
for (i=0; i< 6; i++)
buf1[ind+i] = buf[i];
buf1[ind+i] = 0;
ind += 6;
if ((ilong % 16) == 14)
{
if (zerocnt < 8)
{
fdprintf(1,"%4x ",(ilong - 14)/2);
fdprintf(1,"%s\n",&buf1[0]);
}
ind = 0;
zerocnt = 0;
}
}
printf("\n\n");
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -